Como pular para o início ou o fim da linha no vim + OS X

17

No terminal, posso fazer isso pressionando shift + home e shift + end, mas parece que não funciona no vim. As teclas inicial e final rolam apenas a janela do terminal. Eu gostaria de pular no modo de edição.

JtR
fonte
4
No modo de comando, você pode encontrar na Folha de dicas do Vim (0 e $): fprintf.net/vimCheatSheet.html . Eu não sei sobre o modo de edição, no entanto.
Gnoupi

Respostas:

13

Esta resposta assume que você está usando o vim em uma janela do Terminal .

As ligações padrão para Home e End são um pouco diferentes do que um programa esperaria com base na configuração TERM usual (ou seja, uma variante xterm). Se você deseja manter as ligações padrão (e ter que usar as variantes Shifted no Terminal ), tente colocar algo assim em seu .vimrc:

:" map Mac OS X Terminal.app default Home and End
:map <ESC>[H <Home>
:map <ESC>[F <End>
:imap <ESC>[H <C-O><Home>
:imap <ESC>[F <C-O><End>
:cmap <ESC>[H <Home>
:cmap <ESC>[F <End>

Caso contrário, você pode tentar ajustar os códigos que o Terminal envia quando você usa o Início e o Fim (mesmo sem deslocamento, se desejar). Uma pesquisa provavelmente mostraria alguns lugares que descrevem como fazê-lo ( aqui está um ). A idéia básica é que você deseja que o Terminal envie ESC [1 ~ em vez de ESC [H para Casa e ESC [4 ~ em vez de ESC [F para Fim (ou Shift-Home / Shift-End, se você quiser manter Home / Fim para acessar a rolagem). Eu descreveria o processo com mais detalhes, mas tenho apenas 10.4 e sei que o Terminal foi alterado muito na 10.5 e posterior.

Chris Johnsen
fonte
8

Com o iTerm e o Vim, você pode usar as setas fn + direita e esquerda no modo de inserção para pular para o início ou o fim da linha. Com Terminal.app você usa shift + setas .

giorni
fonte
1

Como complemento à resposta de Chris , você também pode conseguir a navegação por palavras (com Option+arrowteclas), apenas adicionando essas quatro linhas:

:map <ESC>f el
:imap <ESC>b <C-o>b
:imap <ESC>f <C-o>el
:cmap <ESC>f el

Observe que oestá em minúscula, para que não saia do insertmodo para a operação. Você também pode alterar as letras maiúsculas Ona resposta original para o mesmo efeito.

Maciej Sz
fonte
0

No MacVim, você pode usar o comando 'Seta para a esquerda' e o comando 'Seta para a direita' para ir para o início e o fim da linha enquanto estiver no modo de edição.

Dominik
fonte
Parece que o JtR está usando o vim dentro do Terminal.app em vez de usar o MacVim (que eu recomendo muito, e também uso pessoalmente).
Matrix Mole
0

Vá para Terminal -> Preferências -> Perfis -> Teclado e adicione:

Chave: ↖ Ação: \ 033OH

Chave: ↗ Ação: \ 033OF

Alfredo Cardigliano
fonte