Scorri di un quarto (25%) dello schermo verso l'alto o verso il basso


14

Trovo spesso scorrere una pagina intera troppo disorientante, mezza pagina troppo, ma un quarto di pagina è giusto. Attualmente lo faccio semplicemente tenendo premuti i tasti freccia.

Come faccio a scorrere facilmente il 25% della pagina verso il basso e verso l'alto?


1
controlla la funzione barrata in questa risposta: stackoverflow.com/a/3102890
— Sundeep

Risposte:


19

Forse ctrlde ctrlupotrebbe essere quello che stai cercando. Per impostazione predefinita, spostano metà dello schermo.

Da :h CTRL-D:

Scorri la finestra verso il basso nel buffer. Il numero di righe deriva dall'opzione 'scroll' (impostazione predefinita: mezza schermata).

Se [count] viene fornito, impostare prima l'opzione 'scroll' su [count].

Ciò significa che la prima volta che vuoi scorrere in una finestra puoi fare XXctrlddove XX è il 25% del numero di linee nella tua finestra. Quando si imposta scrollsul valore XX, è quindi possibile utilizzare ctrlde ctrluspostare il 25% dello schermo.

Inoltre, penso che :h scrollingpotrebbe essere interessante per te.


modificare

Ed ecco un'altra soluzione con una funzione e alcuni mapping da aggiungere al tuo .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>

La funzione otterrà l'altezza della finestra corrente e, in base al suo parametro, scorrerà lo schermo verso l'alto o verso il basso di un quarto dell'altezza.

Le mappature chiameranno la funzione, la prima per salire e la seconda per scendere.

Naturalmente, è possibile modificare <up>e <down>alcuni altri tasti se si desidera mantenere il comportamento predefinito dei tasti freccia.


2
Sembra che potrebbe avere più senso usare ctrl-Ee ctrl-Ynelle mappature, perché a). hai quindi scorciatoie separate per lo scorrimento di 1/2 pagina e 1/4 pagina. b). il comportamento di ctrl-U/ ctrl-Dè coerente e non dipende dal fatto che sia stata precedentemente utilizzata la mappatura.
— Ricco

Non capisco la tua nota importante. Cosa intendi con inserire manualmente? Attualmente l'utilizzo di questo elimina una riga anziché spostare la pagina.
— Louis Hong,

@LouisHong Vedi la riga in cui let key="^U"la parte tra virgolette doppie rappresenta il codice chiave di ctrl+u. Quindi, se hai copiato la funzione in vim, posiziona il cursore sul primo doppio apice di virgolette ci"per modificare il contenuto delle virgolette e poi su colpito, ctrl+vseguito dallo ctrl+ustesso sulla riga let key="^D".
— statox

@Rich: Sì, questo è un buon punto. Ho usato i tasti freccia perché è quello che ha detto OP, ma il tuo punto è rilevante.
— statox

@statox Mi hai frainteso! (Non ero chiaro). Intendevo usare let key="^Y"invece di let key="^U". Creerà lo stesso comportamento ma senza influire 'scroll'sull'impostazione.
— Ricco il


3

Ho variato l' approccio statox in modo che scorra in modo più coerente sugli avvolgimenti di linea. Se si desidera un quarto di passo, riportare da 0,618 a 0,25 o altro.

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>

0

Se desideri una buona risposta generale e non un 25% esatto, puoi calcolare il conteggio delle linee normali su una pagina diviso per 25 e impostare alcuni mapping di sistema. Ad esempio, se di solito hai circa 100 linee alla volta su uno schermo, il 25% di queste è 25 linee, quindi puoi impostare una mappatura chiave su qualcosa come la tua J e K maiuscola per spostarti rapidamente su e giù di 25 linee

noremap J 25j
noremap K 25k

Se vuoi semplicemente saltare al quarto di quarto dell'intero file, quindi in modalità normale basta digitare:

25%

1
Penso che ci siano due inconvenienti con la tua soluzione: noremap J 25jhardcodifica il valore 25quindi quando, ad esempio, dividi orizzontalmente una finestra di 100 linee, la tua mappatura navigherà effettivamente il 50% delle nuove finestre. Per quanto riguarda la tua seconda opzione :25%, non sapevo che esistesse, ma dai miei test sembra che metta il cursore in una posizione basata sulla prima riga: se ho un buffer di 100 righe e voglio spostarmi in avanti del 25%, la digitazione :25%mi porterà sulla linea 25, non importa dove fosse il mio cursore. Potresti anche inserire l'argomento della guida che descrive questa funzione che non riesco a trovare nel documento?
— statox

1
Ho trovato l'argomento di aiuto su :h N%:-)
— statox
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.