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.