W vimie, jak sprawić, aby lewy i prawy klawisz strzałki zmieniły linię?

25

W vimie moje klawisze strzałek działają poprawnie, przesuwając w górę, w dół, w lewo i w prawo zgodnie z oczekiwaniami, z jednym wyjątkiem. Na początku linii lewa strzałka nic nie robi, zamiast przejść do ostatniego znaku z poprzedniej linii. Na końcu wiersza strzałka w prawo nic nie robi, zamiast przejść do pierwszego znaku następnego wiersza.

Czy istnieje ustawienie, które mogę zmienić, aby uzyskać oczekiwane zachowanie?

nohat
źródło
4
Sądzę, że większość użytkowników VIM zaleca, aby nie używać klawiszy strzałek.
user12612,
@ user12612 dlaczego dokładnie?
luchonacho
@luchonacho Myślę, że pomysł polega na tym, że poważni użytkownicy VIM utrzymywaliby, że twoje palce nie powinny opuszczać głównego rzędu klawiatury, aby nawigować tam, gdzie jesteś w tekście.
nohat

Odpowiedzi:

26

Po dalszych poszukiwaniach w Google znalazłem odpowiedź, aby skorzystać z tej whichwrapopcji.

Dodałem następujący wiersz do mojego .vimrc:

set whichwrap+=<,>,[,]

<I >możliwości włączenia do żądanego trybu normalnego i [i ]włączyć pożądane ustawienie trybu wkładki.

nohat
źródło
1
(Dlaczego nie było to ustawienie domyślne w moim systemie to tajemnica)
więcej
Wydaje się, że nie wpływa to na zachowanie h j k lkluczy.
Sebastián Grignoli,
Tak, istnieją inne wartości dla hi j. Zobacz :help 'whichwrap'lub vimhelp.appspot.com/options.txt.html#%27whichwrap%27 . k i ja tak naprawdę nie mają zastosowania, ponieważ mówimy o zachowaniu lewo / prawo na początku / końcu linii.
Adam Monsen
9

Dodaj to do swojego .vimrc:

set whichwrap+=<,>,h,l,[,]
gpista
źródło
0

Jest to zachowanie domyślne - zawsze możesz użyć opcji Początek i Koniec, aby przejść na początek i koniec linii.

łosoś łososiowy
źródło
5
OP chce zmienić domyślne zachowanie. Właśnie dlatego zapytał tutaj.
akira
0

Możesz obejść ten problem, używając w i b, które będą owijać linie.

hasen
źródło
Ale b zabiera ci pierwszy znak ostatniego słowa poprzedniego wiersza. Czy naprawdę nie ma sposobu, aby strzałka w lewo przesunęła się do ostatniego znaku poprzedniej linii, gdy znajduje się na pierwszym znaku linii?
nohat
Tak, wiem, to nie jest prawdziwe rozwiązanie.
hasen