Czy istnieje sposób na przesunięcie kursora o względną liczbę linii w vi / vim? Załóżmy, że masz kursor 10 linii pod blokiem kodu, który chcesz usunąć. Jeśli masz numery wierszy pokazane we względnej kolejności, dobrze byłoby mieć polecenie „przeskocz o 10 wierszy w górę”, które zaprowadzi Cię tam.
A może lepiej jest wyświetlić bezwzględne numery linii i przejść do xgg, gdzie x jest numerem linii?
Odpowiedzi:
Tak, oczywiście, że jest sposób.
j
ik
ruch w dół i do góry jednej linii, więc10j
i10k
ruch w dół i w górę dziesięć wierszy. Możesz powtórzyć dowolny ruch, stawiając przed nim liczbę.Możesz również chcieć,
set relativenumber
jeśli jest to coś, co robisz często - pomoże to zaoszczędzić zliczanie, drukując numery wierszy względem bieżącego wiersza, zamiast liczb bezwzględnych.źródło
set relativenumber
iset number
. To da względne numery linii z bezwzględnym numerem linii dla linii, na której znajduje się kursor.enter
(w przypadku bezwzględnych numerów wierszy wystarczy poprzedzić go dwukropkiem). Jeśli jesteś przyzwyczajony doj
ik
i normalny układ klawiatury, który nie może być zbyt pomocny, ale jak strzała wykorzystujących Colemak użytkownika,enter
jest łatwiejsze do osiągnięcia niż Colemakj
(QWERTYy
klucz)Przesunięcie 10 linii w górę iw dół może nie pasować do twojego zadania, jak również do innych opcji. Rozważ inne ruchy:
Ctrlf, Ctrlbstrona do przodu i do tyłu.
}, {przejdź do przodu i do tyłu o jeden akapit.
Możesz napisać reguły w swoim vimrc, aby
10j
przypisać się do klawisza, powiedzmy,J
aby przejść w dół o 10 linii, dodając następującą linię do pliku vimrc:map <S-j> 10j
Jednak nadpisałbyś użyteczne istniejące
J
polecenie (połącz dwie linie). Znalezienie dobrze ustawionej, nieużywanej kombinacji klawiszy dla10j
/10k
może być trudne, więc sugeruję użycie istniejących ruchów, o których wspomniałem.Możesz także chcieć wiedzieć, że możesz cofnąć się do słowa, które widzisz, wykonując czynność:
?someword
i przejść do słowa, które widzisz, wykonując czynność/someword
. Będą one szybsze niż próba przesunięcia o 10 linii w górę / w dół, a następnie przeniesienia kursora do dokładnej lokalizacji. Jeśli nie możesz wymyślić prostego ciągu wyszukiwania dla danej linii, zawsze możesz przejść do numeru linii, jak powiedziałeś (xgg
).źródło
Bawiłem się z vimem i zauważyłem, że -porusza Cię w górę i w +dół, więc możesz:
lub możesz użyć, kponieważ najprawdopodobniej jesteś przyzwyczajony do ruchu kursora hjk l.
źródło
enter
+