Jak radzić sobie z bardzo długimi liniami w tekście (ponad 500 znaków)?


19

W przypadku niektórych formatów tekstu podział linii ma znaczenie.

Na przykład często używam Vima do pisania dokumentów MediaWiki, w których nie można po prostu nigdzie położyć linii (w przeciwieństwie do Markdown). Więc jestem zmuszony pisać wiersze z wieloma znakami.

Może to prowadzić do długich (ponad 200 znaków) lub nawet bardzo długich (ponad 1000 znaków) linii. W Vimie jest to bardzo niewygodne. Jednym z przykładów jest to, że jeśli chcę edytować coś w środku 1000-wierszowej linii, muszę przesunąć kursor 500 razy.

Można to zrobić nieco szybciej za pomocą wlub /, ale nadal jest to niewygodne.

Czy są lepsze sposoby na poradzenie sobie z tym? Lepsze klawisze ruchu? Jakieś „fałszywe zawijanie” (tekst zachowuje się tak, jakby nie tw=80, ale nie ma go \nw pliku), czy coś innego?


1
Możesz także ustawić display = lastline, aby uniknąć pustych linii @ na końcu ekranu.
Random832

Odpowiedzi:


21

Możesz użyć gserii poleceń, aby przejść do granic widocznego obszaru ekranu. Na przykład g$przesuwa się do prawej krawędzi ekranu (która niekoniecznie jest końcem linii). gjprzesuwa kursor o jedną linię w dół, tak jak pojawia się na ekranie (niekoniecznie jedna linia logiczna w dół).

Być może możesz ponownie powiązać klawisze strzałek:

nnoremap <Up> gk
nnoremap <Down> gj

Lub niektórzy ludzie również bezpośrednio wiążą ponownie ki j:

nnoremap k gk
nnoremap j gj

W trybie wstawiania możesz użyć:

inoremap <C-k> <C-o>gk
inoremap <C-j> <C-o>gj

Lub:

inoremap <Up> <C-o>gk
inoremap <Down> <C-o>gj

Ponadto, jeśli użyjesz :set wrap, Vim zawinie linie, abyś mógł zobaczyć całą linię. Możesz także użyć, set showsbreak=+aby pokazać a, +aby wskazać, że Vim robi zawijanie.


Aby przejść do określonych pozycji kolumn, możesz użyć |polecenia. Na przykład 200|przejdzie do pozycji kolumny 200.


1
... i g5jjak zwykle zeskoczyć 5.
yo „

1
@yo 'Myślę, że masz na myśli5gj
Martin Tournoij

1
@Carpetsmoker Strange; w przypadku większości poleceń nie ma znaczenia, w jakiej kolejności podajesz prefiksy i liczby, dopóki samo polecenie jest ostatnie. Tutaj nie: - /
yo

@yo”, dobrze, w g5j, g5widać Pierwszy, który właśnie przechodzi do następnego 5przed zastosowaniem j. Dlatego nie może robić tego, co 5gjrobi.
Shahbaz

3

Vim obsługuje miękkie owijanie, tylko set wrappo to, aby je włączyć, i będzie owijał długie linie wychodzące poza widoczny ekran. Możesz używać gj&, gkaby poruszać się odpowiednio w górę / w dół po takich zawijanych liniach.


2

Kiedy mam do czynienia z bardzo długimi liniami, największa bolączka dotyczy różnych długości linii. Oznacza to, że poruszanie się w górę lub w dół w pobliżu końców linii przewija okno bardzo daleko w lewo lub w prawo.

Można tego uniknąć poprzez ustawienie virtualedit=all, które pozwala przenieść kursor w przestrzeń długo po zakończeniu linii.


1

Jak powiedzieli inni, możesz użyć g+ czegoś, aby się poruszać. Jednak w przypadku wyjątkowo długich linii gjwielokrotne naciskanie w celu przejścia w dół nie jest ergonomiczne. Mam w sobie następujące .vimrcułatwienia:

vmap <D-j> gj
vmap <D-k> gk
vmap <D-4> g$
vmap <D-6> g^
vmap <D-0> g^
nmap <D-j> gj
nmap <D-k> gk
nmap <D-4> g$
nmap <D-6> g^
nmap <D-0> g^

Na komputerze Mac pozwala mi to używać j, k, $, 0 i ^ w liniach wyświetlacza, przytrzymując klawisz polecenia. W innych systemach zamiast Dmożesz spróbować Mlub AAlt lub CControl.

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.