Por que o Ctrl-Arrow não está funcionando no bash no OS X?

12

Eu uso Ctrl - e Ctrl - em todos os sistemas Linux nos quais trabalho, mas estes 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 embutido.

As combinações de teclas não parecem ser capturadas por nada antes ou pelo Terminal, porque se eu fizer um ssh em um dos meus servidores Linux, eu posso usar Ctrl - / para pular para a palavra seguinte / anterior na linha de comando. No entanto, quando eu tento essa combinação de teclas no bash no meu Macbook, acabei de obter "C" para a seta para a direita e "D" para a seta para a esquerda.

Alguma idéia de como eu posso fazer essas chaves funcionarem no darwin bash?

    
por Ryan Olson 31.10.2010 / 18:02

2 respostas

13

O OS X usa a chave emacs binding my default. Isto é verdade é praticamente todas as aplicações no OS X, é bastante bom. Significa que coisas como C-a e C-e são o começo / fim da linha. Você também recebe o nifty back-word-kill com M-backspace, oh, e kill-line com C-k.

Isso deve significar que, no seu terminal, a palavra para frente / para trás está vinculada a M-f e M-b, respectivamente (M = Meta = alt / option), mas esse não é o caso. No OS X forward / backword-word são ligados a M- → e M- ← por padrão.

Você pode alterar esse comportamento alterando como a Biblioteca Readline GNU está configurada para sua conta. Isso ocorre no seu arquivo ~/.inputrc . Você pode obter uma grande lista de comandos vinculáveis com man readline , bem como na documentação on-line, como aqui. .

Então, para responder sua pergunta, você quer remapear o que o Readline faz quando vê C- → e C- ← para fazer o que ele faz no seu servidor linux.

A sintaxe de um arquivo ~/.inputrc é bem simples para o que você quer fazer: key-sequence: action .

Isso deve ser o que você precisa para obter o comportamento desejado:

"\e[5C": forward-word
"\e[5D": backward-word

Aqui está outra página com ligações úteis adicionais.

(Você provavelmente poderia usar copiando o / etc / inputrc da sua caixa linux para o seu OS X ~ / .inputrc)

    
por 31.10.2010 / 20:16
3

coloque em ~/.inputrc as seguintes linhas:

"\e[5C": forward-word
"\e[5D": backward-word
    
por 31.10.2010 / 19:02

Tags