Recentemente, mudei do bash para o zsh, mas sinto falta do meu Alt+ LeftArrowKeye Alt+ RightArrowKeypara ir e voltar uma palavra de cada vez.
Agora, se eu pressionar Alt+ LeftArrowKey, volto algumas letras e fico presa. Eu não irei mais para trás e ele não voltará ao final da linha com Alt+ RightArrowKeycomo eu esperaria. Eu não posso nem usar as setas do teclado para ir até o fim da linha, apenas até o penúltimo. Não é possível inserir novos caracteres na linha ou excluir de fato.
Como obtenho meu atalho de volta?
Estou no Mac OS X usando o Terminal, se isso for importante.
^[[D
para mim enquanto ctrl + v estava relatando^[OD
. A sugestão de Ctrl + v funcionou, mas a de gato não. Além disso, ctrl + v relatava a mesma coisa para alt + <- e alt + ->. Consegui adicionar esses dois examinando a saída do gato e substituindo qualquer "[[" por "O")^[^[[C
para palavra direta e^[^[[D
para trás, mas a atualização para essas no .zshrc não funcionou por algum motivo.bindkey "^[^[[D" backward-word
ebindkey "^[^[[C" forward-word
em ~ / .zprofile funcionou para mim!Para quem usa o iTerm, independentemente do shell
Todas as soluções oferecidas aqui adotam uma abordagem inversa na minha opinião. Você está basicamente dizendo ao seu shell para ouvir alguma sequência esc ou outra ligação de chave que você definiu no seu terminal, criando problemas de compatibilidade ao alternar shells (se você fizer o SSH em outro shell, mude de BASH para ZSH, etc. e você perde alguns, se não todos, os atalhos de teclado).
A maioria dos shells possui um conjunto de seqüências padrão pré-vinculadas. Além disso, embora não sejam 100% consistentes, estão próximos o suficiente. Portanto, a maneira mais fácil que eu encontrei de criar a combinação de teclas para uma ação específica no shell é dizer ao seu aplicativo de terminal que se vincule às combinações de teclas padrão que são consistentes entre os shells.
Eu escrevi uma solução compressiva para fazer com que o seu terminal responda o mais próximo possível dos atalhos de teclado nativos do Mac aqui
Abra as preferências do iTerm ⌘+ ,e navegue até a
Profiles
guia (aKeys
guia pode ser usada, mas a adição de teclas ao seu perfil permite salvar o seu perfil e sincronizá-lo com vários computadores) ekeys
subguia e digite o seguinte:Mover o cursor uma palavra para a esquerda
Mover o cursor uma palavra para a direita
E isso deve fornecer o comportamento desejado não apenas no ZSH, mas também se você fizer o SSH em um servidor executando BASH, irb / pry, nó etc.
fonte
bindkey | grep forward-word
você deve ver"^[f" forward-word
retornado, mas se não, você tem 2 opções. mapear para um dos outros retornados ou adicionar"^[f" forward-word
ao seu.zshrc
."^[f"
parece ser a ligação mais consistentemente usada paraforward-word
uso em shells e a única definida por padrão na minha versão do bash.Adicionar o seguinte ao ~ / .zshrc funcionou para mim no OSX Mountain Lion.
fonte
bindkey "\e\e[D" backward-word
bindkey "\e\e[C" forward-word
No MacOS High Siera 10.13.6 ou Mojave 10.14.2 e usando o iTerm2 com ZSH Para passar das palavras, devo colocar assim:
Outras soluções não funcionam
fonte
Embora não responda estritamente à sua pergunta, a ligação padrão para
forward-word
ebackward-word
sãoalt-f
resp.alt-b
.Isso funciona em qualquer lugar, não requer que você saia da linha inicial e possui uma boa propriedade mnemônica (f = para frente, b = para trás), além de ser consistente com
ctrl-f
ectrl-b
sendoforward-character
ebackward-character
.Rasgue suas teclas de seta!
fonte
Para fazê-lo funcionar, usei esta resposta , porém tive que trocar os códigos (esquerda <-> direita)
← + ← Enviar códigos hexadecimais: 0x1b 0x66
⌥ + → Enviar códigos hexadecimais: 0x1b 0x62
e adicione o seguinte ao meu
~/.zshrc
fonte
No Mavericks (10.9.4), o código é 1; 5 ... então, para ligar alt com setas, tenho meu .zshrc usando este:
Você pode usar CTRL + V e, em seguida, o comando que deseja usar
em Yosemite, use a solução de Rob
fonte
bindkey "[C" forward-word bindkey "[D" backward-word
No zsh, você pode usar o
bindkey
comando para ver os atalhos do teclado.Use
bindkey
para explorar as opções disponíveis sem combinações de teclas personalizadas.Ou seja,
^[b
mover uma palavra para trás e^[f
avançar uma palavra.fonte