2011-02-06 13 views
47

Czy istnieje sposób na przesuwanie kursora względnej ilości linii w vi/vim? Powiedzmy, że masz kursor 10 linii pod blokiem kodu, który chcesz usunąć. Jeśli masz numery linii przedstawione w kolejności względnej, byłoby miło mieć "skok 10 wierszy polecenia", które Cię tam zabiorą.Przesuń kursor x linie od bieżącej pozycji w vi/vim

A może lepiej jest podać bezwzględne numery linii i przejść do xgg, gdzie x to numer wiersza?

+0

Jeśli musisz powtórzyć to kilka razy: https://superuser.com/questions/429917/repeat-last-normal-mode-command-including-moves-in-vim – toliveira

Odpowiedz

65

Tak, oczywiście jest sposób. j i k przesuń w dół i do góry o jedną linię, aby 10j i 10k przesuwać w dół iw górę o dziesięć linii. Możesz powtórzyć dowolny ruch, umieszczając przed nim numer.

Możesz również chcieć set relativenumber, jeśli to jest coś, co robisz bardzo dużo - pomoże Ci to oszczędzać, drukując numery linii w stosunku do bieżącej linii zamiast liczb bezwzględnych.

+0

Dzięki! Powinienem był się zorientować, że licznik będzie miał zastosowanie również do poleceń ruchu. Zrobiłeś mój dzień! –

+0

Od wersji Vim 7.4 możliwe jest jednoczesne wyświetlanie zarówno względnych, jak i bezwzględnych numerów linii, poprzez dodanie następujących wartości do .vimrc 'set relativenumber' oraz' set number'. Da to względne numery linii z bezwzględnym numerem linii dla linii, na której znajduje się kursor. –

+1

Możesz także przesunąć w dół o kilka linii, wpisując po prostu liczbę, a następnie "enter" (dla bezwzględnych numerów linii, przedrostkiem wpisz ją dwukropkiem).Jeśli jesteś przyzwyczajony do 'j' i' k' oraz normalnego układu klawiatury, to może nie być zbyt pomocne, ale jako użytkownik używający strzałek Colemak, 'enter' jest łatwiejszy do osiągnięcia niż Colemak' j' (QWERTY klawisz 'y') – SnoringFrog

34

Przesuwanie 10 linii w górę lub w dół może nie być odpowiednie dla zadania użytkownika i innych opcji. Rozważ inne ruchy:

Ctrl+f, Ctrl+b strona do przodu i do tyłu.

}, { przesuń się do przodu i do tyłu o jeden akapit.

Możesz napisać reguły w vimrc do wiązania 10j do klawisza, powiedzmy J aby przejść w dół 10 linii dodając następującą linię do pliku vimrc: map <S-j> 10j

jednak chcesz być zastąpieniem istniejących użyteczna J polecenie (połączyć dwie linie). Znalezienie dobrze ustawionej nieużywanej kombinacji klawiszy dla 10j/10k może być trudne, dlatego sugeruję użycie istniejących ruchów, o których wspomniałem.

Warto również wiedzieć, że można przesunąć do tyłu, aby słowa, które można zobaczyć wykonując: ?someword i przekazuje słowa widać wykonując /someword. Będą one szybsze niż próba przesunięcia w górę/w dół o 10 linii, a następnie przesunięcie kursora do dokładnej lokalizacji. Jeśli nie możesz znaleźć prostego ciągu wyszukiwania dla danej linii, zawsze możesz przejść do numeru linii, tak jak powiedziałeś (xgg).

+0

Strona w górę iw dół osiągnęła to, czego szukałem! – jeremyjjbrown

+0

Używam ctrl-f i ctrl-b przez cały czas, ale pomijam {,}, które są prawdopodobnie najlepszą szczegółowością edycji kodu! Dzięki! –

+0

Dokładna wiedza, ile linii należy przesunąć, jest prawie niemożliwa. {i} to moja preferowana opcja. – Andrejs

8

byłem brudząc z vim i zauważyłem - porusza się w górę iw dół + cię porusza, więc można

10- 

lub można użyć k ponieważ jesteś najprawdopodobniej wykorzystywane do hjkl ruch kursora.

+1

Dla ruchu do przodu, 'enter' działa tak samo jak' + 'po numerze i jest łatwiejszy do osiągnięcia przez większość czasu – SnoringFrog

+0

@SnoringFrog Tak, ale to jest tak, że może istnieć jakiś związek między w górę i w dół; Nie chcę, żeby ktokolwiek poruszał się w ten sposób, bo i tak byłaby najszybsza. – Cilan

Powiązane problemy