alt do iTerm2 Vim + seta para a direita / esquerda

13

Como usuário do Linux, estou muito acostumado a pular de uma palavra para outra no vim / nano usando ALT+ leftou right.

Isso não parece funcionar corretamente usando o iTerm, estou usando o zsh, tentei adicionar;

bindkey -e
bindkey '^[[1;9C' forward-word
bindkey '^[[1;9D' backward-word

Funciona, mas apenas dentro do zsh, comentei essas linhas e adicionei no iTerm um atalho de teclado;

insira a descrição da imagem aqui

Funciona, mas apenas para o ALTleft

Como posso fazê-lo funcionar para a seta direita também?

seds
fonte

Respostas:

10

Nas propriedades do iTerm, vá para Perfis -> Chaves e configuração lá

  • Para ⌥→sequência de escape de envio[1;5C
  • Para ⌥←sequência de escape de envio[1;5D

insira a descrição da imagem aqui

eiennohito
fonte
Isso não funciona para mim. As seqüências de escape são enviadas, mas o vim move apenas um espaço para frente e para trás. Executando o vim 7.3 padrão que acompanha o OS X 10.8. Idealmente, eu gostaria de alterá-lo no lado do vim, sem alterar os padrões do emulador de terminal (já que isso resultará em melhor portabilidade).
slhck 6/09/13
Isso é estranho, funciona tanto no vim (do homebrew, não no padrão) quanto no zsh com a configuração padrão do oh-my-zsh (em ~ / .oh-my-zsh / lib / key-bindings.sh).
eiennohito 6/09
Também não funciona aqui, eu posso usar alt + arrow dentro do zsh, no Vim só funciona com shift + arrow :(
seds
Eu verifiquei mais uma vez nos sistemas remotos disponíveis (ubuntu 13.04, stable debian e scientific linux) e funciona em qualquer lugar. Qual é a saída quando você pressiona Control + V, ⌥ →? Para mim, é ^ [[1; 5C
eiennohito 8/13
Funciona para mim: iTerm / Vi + zsh
Petro Semeniuk
7

Comece visualizando o código da chave que seu terminal está enviando para o vim:

$ sed -n l
^[[1;9D 

No exemplo acima, executei o comando sed e pressionei Alt + Left.

A ^[[1;9Dé a sequência de escape que está sendo enviada para o vim, para que possamos utilizá-la para o nosso mapeamento.

Adicione ao vimrc:

map <Esc>[1;9D :tabn<CR>
lfender6445
fonte
Obrigado, isso funcionou para mim.
J5shi
0

Nenhuma dessas respostas funcionou para mim. Acabei carregando uma VM Linux e verifiquei com o que eu iria receber <Alt-ARROW>.

As 4 sequências de escape que funcionaram para mim são as seguintes:

  • <Alt+Up>: [1;3A
  • <Alt+Down>: [1;3B
  • <Alt+Right>: [1;3C
  • <Alt+Left>: [1;3D

Tenha cuidado para editar as chaves de perfil e não as principais que serão substituídas pelas de perfil (onde Alt + Arrows são definidas por padrão como uma sequência hexadecimal que não funcionou com o vim).

Jerska
fonte
-1

Apenas uma outra solução possível, o vim oferece movimentos de palavras por conta própria, consulte:

:help word-motions
tnull
fonte
2
Você deve incluir as informações essenciais em vez de apenas colocar uma referência aqui.
Pabouk