Przejdź do środka linii w vimie


14

Wiem, że 0 idzie na początek linii i $ idzie na koniec, ale czy jest coś na środku?

Odpowiedzi:


11
:call cursor(0, len(getline('.'))/2)

4
Byłoby to całkiem przydatne, gdyby zostało zmapowane, np .::: nnoremap gm: wywołanie kursora (0, len (getline ('.')) / 2) <cr>
Heptite

3
Wystarczy virtcol („$”) / 2.
Luc Hermitte

@Luc Hermitte: Ładne, ale nie do końca najlepsze zachowanie, gdy w grę wchodzą twarde karty.
ephemient

Dlatego używam virtcol zamiast col. :) Ale rzeczywiście powinniśmy użyć | a nie kursor (). BTW, len () nie da lepszego wyniku. Ponadto len spowoduje inne problemy ze znakami wielobajtowymi.
Luc Hermitte

8

Pisanie gmby to zrobiło, ale porusza się po liniach ekranu (patrz :help gm). Aby działał z liniami tekstowymi, można ponownie przypisać to polecenie:

map gm :call cursor(0, virtcol('$')/2)<CR>

gm wydaje się przesuwać kursor na środek ekranu, ale jeśli moja linia tekstu jest krótsza niż długość ekranu, nie przenosi mnie na środek. Przepraszamy za brak wyjaśnień.
teggy

@teggy: Rozumiem. Zmodyfikowałem swoje rozwiązanie, aby zmienić mapowanie gm, aby przejść do środka wiersza tekstu. Jak widać łączy w sobie rozwiązania Ephemient i Luca Hermitte'a.
JooMing

Jak wskazał ephemient, nadal występuje problem z twardymi tarbami, ponieważ kursor () liczy je jako jeden znak każdy. Co więcej, nie będzie również działać ze znakami wielobajtowymi.
Luc Hermitte

7

Oto rozwiązanie, które będzie respektować zarówno tabele twarde, jak i znaki wielobajtowe.

:exe 'normal '.(virtcol('$')/2).'|'

1

Oto najlepsze rozwiązanie, jakie znalazłem. Skakanie dokładnie na środek linii nie jest zbyt praktyczne. Najprawdopodobniej nadal będziesz musiał przesunąć kursor o kilka pozycji po przejściu na środek. Co jeśli możesz przeskoczyć do konkretnej postaci? Wiele osób po prostu szuka postaci, a następnie naciska „Dalej”, aż do niej dotrze. To jest powolne. Wtyczka Easy-motion oferuje lepsze rozwiązanie.

Moim ulubionym jest <leader><leader>spostać, na którą chcesz skakać. Easy Motion zastępuje wszystkie mecze różnymi literami do wyboru. Zobacz samouczek. To zmieniająca życie wtyczka ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.