Eu uso Ctrl- ←e Ctrl- →em todos os sistemas Linux em que trabalho, mas essas combinações de teclas não funcionam no bash no meu Macbook Pro. Ele está executando o Snow Leopard e estou usando o aplicativo Terminal incorporado.
As combinações de teclas não parecem ser capturadas por nada antes ou pelo Terminal, porque se eu fizer o ssh para um dos meus servidores Linux, posso usar Ctrl- ←/ →para pular para a palavra seguinte / anterior na linha de comando. No entanto, quando tento essa combinação de teclas no bash no meu Macbook, recebo "C" na seta para a direita e "D" na seta para a esquerda.
Alguma idéia de como posso obter essas chaves para trabalhar no darwin bash?
Respostas:
O OS X usa a ligação de teclas emacs como padrão. Isso é verdade em praticamente todas as aplicações do OS X, é bastante agradável. Isso significa que coisas como Ca e Ce estão no início / fim da linha. Você também recebe a astuciosa matança de palavras inversas com M-backspace, oh, e a linha de matança com Ck.
Isso deve significar que no seu terminal a palavra para frente / trás está vinculada a Mf e Mb, respectivamente (M = Meta = alt / opção), no entanto, esse não é o caso. No OS X, a palavra forward / backword-word está vinculada a M- → e M- ← por padrão.
Você pode alterar esse comportamento alterando como a GNU Readline Library está configurada para sua conta. Isso ocorre no seu
~/.inputrc
arquivo. Você pode obter uma grande lista de comandos vinculáveisman readline
, bem como na documentação online como esta aqui. .Então, para responder sua pergunta, você deseja remapear o que o Readline faz quando vê C- → e C- ← para fazer o que faz no seu servidor Linux.
A sintaxe para um
~/.inputrc
arquivo é muito simples para o que você quer fazer:key-sequence: action
.Deve ser o que você precisa para obter o comportamento desejado:
Aqui está outra página com ligações adicionais úteis.
(Você provavelmente conseguiria copiar / etc / inputrc da sua caixa Linux para o seu OS X ~ / .inputrc)
fonte
\e[1;5C
e\e[1;5D
também acionarforward-word
ebackward-word
.coloque as
~/.inputrc
seguintes linhas:fonte
Hoje em dia, parece que as seqüências de escape que Ctrl-Arrows emitem no terminal mudaram. Aqui está o que funciona para mim a partir de hoje (final de 2018):
"\e[1;5C": forward-word "\e[1;5D": backward-word
Nota: você sempre pode descobrir as seqüências de escape reais digitando
cat -v
no Terminal e pressionando Ctrl-Seta para a esquerda ou Ctrl-Seta para a direita. Aqui está um exemplo de saída para minha própria seta Ctrl-Esquerda:^[[1;5C ^[[1;5C
Para traduzir para o
.inputrc
jargão, substitua o sinal de escape^[
por\e
e cole o resultado entre aspas duplas.fonte
Como @ bhh1988 mencionado, a configuração do Controle da Missão impede que as teclas Ctrl funcionem com as teclas de seta
bash
. Como não queria interferir com esses atalhos, use a tecla Option (ou seja, Alt). Atualmente no Mojave, usando um teclado alemão (não sei se isso é relevante), coloquei o seguinte.inputrc
para usar Option-left-arrow e Option-right-arrow para mover entre as palavras.fonte