Entrei em um dos servidores de provedores de hospedagem e notei que ALT + esquerda e ALT + direita se moviam entre as palavras em um prompt de shell na tela GNU.
Que tipo de associações de teclas eu preciso configurar e onde obter esse comportamento no meu OS X zsh local em execução no iTerm2?
keyboard-shortcuts
zsh
iterm2
key-binding
Mikko Ohtamaa
fonte
fonte
FOO=BAR
é uma palavra para zsh e 2 palavras para bash. Da mesma forma, se você definir o cursor no finalfoo --bar
e pressionar alt + backspace, no bash você teráfoo --
e no zsh você teráfoo
. O Zsh adiciona muitos recursos ao bash, mas também possui muitos padrões insanos a serem substituídos.Respostas:
Encontrei a solução aqui: https://coderwall.com/p/h6yfda . Irá copiar as partes mais importantes, caso o link seja desativado.
fonte
Você está procurando as palavras
backward-word
- chave eforward-word
. Portanto, se você estiver em um shell em que as combinações de teclas não estão funcionando, tentebindkey -L | grep backward-word
verificar se elas estão configuradas. Há mais informações sobre isso no zshzle (1) .Você pode definir manualmente a combinação de teclas digitando algo como isto:
Também tive alguns problemas com as combinações de teclas e o problema era quase sempre que a tecla Option / Alt enviava algo diferente do esperado Meta / Escape.
fonte
emacs-forward-word
eemacs-backward-word
. A diferença é que você pula para o final da palavra e recua para o início da palavra, em vez de pular sempre no início da palavra.Não posso falar pelo iTerm, mas estas são as combinações de teclas que usei para resolver esse problema no Terminal GNOME, no Fedora 19, executando o ZSH 5.0.7 com Oh-my-zsh:
onde
\e
== A seqüência de teclas de escape (conforme documentado na seção 4.1.1 )e
[
==O
(O maiúsculo; conforme documentado na seção 4.2.1 ), em alguns casos. Por exemplo, sobtmux
esta substituição é necessário para mim, no entanto, semtmux
que seja necessário que nenhuma substituição seja feita e[
==[
Os códigos das teclas para uma sequência podem ser obtidos usando
cat
e pressionando a sequência desejada. Por exemplo, os resultados da prensagem<Alt+Right>
devem ser interpretados da seguinte maneira:^[
==\e
== A sequência da tecla de escape[
==[
semtmux
OR[
==O
(o maiúsculo) comtmux
1;3
== Não tenho certeza sobre este, mas deve significar logicamente<Alt>
C
== A tecla de seta para a direitaEntão, essa sequência é fornecida
bindkey
no~/.zshrc
arquivo para persistência, como o primeiro argumento, e é vinculada , o que significa que o pressionamento de tecla no argumento um executará um comando de editor específico (ou widget em termos zsh), para o widget, que no primeiro a linha de exemplo acima éforward-word
.Ele
~/.zshrc
deve ser recuperado depois que esses dois comandos forem anexados a ele com:$ source ~/.zshrc
Agora, um aborrecimento no meu sistema é que essa combinação específica fez com que o emulador de terminal emitisse um sinal sonoro cada vez que o comando foi emitido, o que corrigi desabilitando o comando
'Edit'->'Profile Preferences'->'Terminal Bell'
caixa de seleção.fonte
O que funcionou melhor para mim em relação a tornar a navegação na linha de comando do iTerm2 mais intuitiva para mim (eu sou um jovem adulto que não cresceu em uma linha de comando, mas passei muito tempo em editores de texto e IDEs) foi para:
Natural Text Editing
opção no menu suspenso Predefinições.Isso padroniza as chaves do editor para um arranjo mais padrão, sem que eu precise modificar todas as opções individualmente.
fonte
Eu sugiro que você use
zkbd
para configurar combinações de teclas. Eu o uso e Alt+ Left/ Alt+ Rightfunciona bem no iTerm2. Vejazshcontrib(1)
para detalhes sobre zkbd.fonte