Często przewijanie całej strony jest zbyt dezorientujące, pół strony za dużo, ale ćwierć strony jest w sam raz. Obecnie robię to, przytrzymując klawisze strzałek.
Jak łatwo przewijać 25% strony w dół i w górę?
Często przewijanie całej strony jest zbyt dezorientujące, pół strony za dużo, ale ćwierć strony jest w sam raz. Obecnie robię to, przytrzymując klawisze strzałek.
Jak łatwo przewijać 25% strony w dół i w górę?
Odpowiedzi:
Może ctrldi ctrlumoże być tym, czego szukasz. Domyślnie poruszają się o połowę ekranu.
Od :h CTRL-D
:
Przewiń okno w dół w buforze. Liczba linii pochodzi z opcji „przewijania” (domyślnie: pół ekranu).
Jeśli podano [liczba], najpierw ustaw opcję przewijania na [liczba].
Co oznacza, że po raz pierwszy chcesz przewijać okno, XXctrldgdzie XX oznacza 25% liczby linii w oknie. Po scroll
ustawieniu wartości XX można następnie użyć ctrldi ctrluprzesunąć 25% ekranu.
Myślę też, że :h scrolling
może to być dla ciebie interesujące.
Edytować
A oto kolejne rozwiązanie z funkcją i mapowaniami do dodania do .vimrc
:
function! ScrollQuarter(move)
let height=winheight(0)
if a:move == 'up'
let key="\<C-Y>"
else
let key="\<C-E>"
endif
execute 'normal! ' . height/4 . key
endfunction
nnoremap <silent> <up> :call ScrollQuarter('up')<CR>
nnoremap <silent> <down> :call ScrollQuarter('down')<CR>
Funkcja uzyska wysokość bieżącego okna i zgodnie z jej parametrem przewinie ekran w górę lub w dół o jedną czwartą wysokości.
Odwzorowania będą wywoływać funkcję, pierwsza w górę, a druga w dół.
Oczywiście możesz zmienić <up>
i <down>
niektóre inne klawisze, jeśli chcesz zachować domyślne zachowanie klawiszy strzałek.
ctrl-E
i ctrl-Y
mapowanie może mieć sens , ponieważ a). masz wtedy osobne skróty do przewijania 1/2 strony i 1/4 strony. b). zachowanie ctrl-U
/ ctrl-D
jest spójne i nie zależy od tego, czy wcześniej korzystałeś z mapowania.
let key="^U"
w którym część pomiędzy podwójnym cudzysłowem ma reprezentować kod klucza ctrl+u
. Więc jeśli skopiowałeś funkcję w vimie, umieść kursor na pierwszym podwójnym trafieniu w cudzysłów, ci"
aby zmodyfikować treść cytatów, a następnie wciśnij, ctrl+v
a następnie ctrl+u
w wierszu to samo let key="^D"
.
let key="^Y"
zamiast let key="^U"
. Stworzy to samo zachowanie, ale bez wpływu na 'scroll'
ustawienie.
Możesz używać ctrlei, ctrlyaby przesuwać stronę o jedną linię w górę iw dół.
Następnie, jeśli chcesz przenieść +/- 25%, możesz użyć, 20ctrleco spowoduje przesunięcie cię o 20 linii w dół.
Oto również dobrze wyjaśnione pytanie, które jest podobne do twojego: /programming/3458689/how-to-move-screen-without-moving-cursor-in-vim
I anyżową statox podejście tak przewija bardziej spójne ciągu linewraps. Jeśli chcesz ćwierć kroku, zmień 0,618 z powrotem na 0,25 lub cokolwiek innego.
function! ScrollGolden(move)
let height=winheight(0)
if a:move == 'up'
let prep='L'
" let key="^Y"
let key='gk'
let post='zb'
elseif a:move == 'down'
let prep='H'
" let key="^E"
let key='gj'
let post='zt'
endif
execute 'normal! ' . prep . float2nr(round(height*0.618)) . key . post
endfunction
nnoremap <silent> <BS> :call ScrollGolden('up')<CR>
nnoremap <silent> <Space> :call ScrollGolden('down')<CR>
Jeśli potrzebujesz dobrej ogólnej odpowiedzi, a nie dokładnej 25%, możesz wziąć pod uwagę normalną liczbę wierszy na stronie, podzielić przez 25 i ustawić niektóre odwzorowania systemowe. Na przykład, jeśli zwykle masz na ekranie około 100 linii na raz, to 25% z nich to 25 linii, dzięki czemu możesz ustawić mapowanie klawiszy na czymś takim jak duże J i K, aby szybko poruszać się w górę i w dół o 25 linii
noremap J 25j
noremap K 25k
Jeśli chcesz po prostu przeskoczyć do ćwiartki całego pliku, w trybie normalnym po prostu wpisz:
25%
noremap J 25j
wiążą się dwie wady: ustalenie wartości na sztywno, 25
dlatego np. Gdy na przykład podzielisz okno 100 linii w poziomie, twoje mapowanie będzie faktycznie poruszać się w 50% nowych okien. O twojej drugiej opcji :25%
nie wiedziałem, że ona istnieje, ale z moich testów wydaje się, że ustawia kursor na pozycji opartej na pierwszej linii: jeśli mam bufor 100 linii i chcę przejść, pisanie 25% do przodu :25%
przyniesie mi w linii 25 bez względu na to, gdzie był mój kursor. Czy możesz również umieścić temat pomocy opisujący tę funkcję, której nie mogę znaleźć w dokumencie?