No vim, como faço para que as teclas de seta esquerda e direita mudem de linha?

25

No vim, minhas teclas de seta funcionam corretamente, movendo-se para cima, baixo, esquerda e direita conforme o esperado, com uma exceção. No início de uma linha, a seta esquerda não faz nada, em vez de ir para o último caractere da linha anterior. No final de uma linha, a seta para a direita não faz nada, em vez de ir para o primeiro caractere da próxima linha.

Existe uma configuração que eu possa alterar para obter o comportamento esperado?

nohat
fonte
4
Eu acho que a maioria dos usuários do VIM recomendaria que você não use as teclas de seta.
user12612
@ user12612 por que exatamente?
luchonacho 30/09
@luchonacho Acho que a idéia é que usuários sérios do VIM acreditem que seus dedos não devem sair da linha inicial do teclado para navegar onde você está no seu texto.
N

Respostas:

26

Depois de pesquisar mais no Google, achei a resposta para usar a whichwrapopção.

Adicionei a seguinte linha ao meu .vimrc:

set whichwrap+=<,>,[,]

As opções <e >ativam a configuração desejada para o modo normal [e ]ativam a configuração desejada para o modo de inserção.

nohat
fonte
1
(Por que este não era o ajuste no meu sistema padrão é um mistério)
nohat
Isso não parece afetar o comportamento das h j k lchaves.
Sebastián Grignoli
Certo, existem outros valores para hej. Consulte :help 'whichwrap'ou vimhelp.appspot.com/options.txt.html#%27whichwrap%27 . k e eu realmente não nos aplicamos, pois estamos falando de comportamento esquerdo / direito no início / fim das linhas.
Adam Monsen 28/07
9

Adicione isso ao seu .vimrc:

set whichwrap+=<,>,h,l,[,]
gpista
fonte
0

Esse é o comportamento padrão - você sempre pode usar Início e Fim para pular para o início e o fim de uma linha.

salmonmoose
fonte
5
O OP deseja alterar o comportamento padrão. É por isso que ele perguntou aqui em primeiro lugar.
akira
0

Você pode contornar isso usando w e b, que serão divididos em linhas.

hasen
fonte
Mas b leva para você o primeiro caractere da última palavra da linha anterior. Não há realmente nenhuma maneira de fazer a seta esquerda se mover para o último caractere da linha anterior quando no primeiro caractere de uma linha?
nohat 4/09/09
Sim, eu sei, não é uma solução real.
hasen