В vim, как заставить стрелки влево и вправо изменить строку?

25

В vim мои клавиши со стрелками работают правильно, двигаясь вверх, вниз, влево и вправо, как и ожидалось, за одним исключением. В начале строки стрелка влево ничего не делает, вместо перехода к последнему символу предыдущей строки. В конце строки стрелка вправо ничего не делает, вместо перехода к первому символу следующей строки.

Могу ли я изменить настройки, чтобы получить ожидаемое поведение?

nohat
источник
4
Я думаю, что большинство пользователей VIM рекомендуют не использовать клавиши со стрелками.
user12612
@ user12612 почему именно?
Лучоначо
@luchonacho Я думаю, что идея заключается в том, что серьезные пользователи VIM будут считать, что ваши пальцы не должны покидать домашний ряд клавиатуры, чтобы перемещаться туда, где вы находитесь в своем тексте.
nohat

Ответы:

26

После некоторого дальнейшего поиска, я обнаружил, что ответ заключается в использовании whichwrapопции.

Я добавил следующую строку в мой .vimrc:

set whichwrap+=<,>,[,]

<И >опция включить нужную настройку для нормального режима и [и ]включите нужную настройку для режима вставки.

nohat
источник
1
(Почему это не было настройкой по умолчанию в моей системе - загадка)
nohat
Похоже, это не влияет на поведение h j k lклавиш.
Себастьян Гриньоли
Правильно, есть другие значения для h и j. Смотрите :help 'whichwrap'или vimhelp.appspot.com/options.txt.html#%27whichwrap%27 . k и l на самом деле не применяются, так как мы говорим о левом / правом поведении в начале / конце строк.
Адам Монсен
9

Добавьте это к вашему .vimrc:

set whichwrap+=<,>,h,l,[,]
gpista
источник
0

Это поведение по умолчанию - вы всегда можете использовать Home и End, чтобы перейти к началу и концу строки.

salmonmoose
источник
5
ОП хочет изменить поведение по умолчанию. Вот почему он (и) спросил здесь, в первую очередь.
Акира
0

Вы можете обойти это, используя w и b, которые будут переносить строки.

Hasen
источник
Но b принимает вас первым символом последнего слова предыдущей строки. Неужели нет способа заставить стрелку влево перейти к последнему символу предыдущей строки, когда она находится на первом символе строки?
nohat
Да, я знаю, это не настоящее решение.
hasen