2013-01-13 7 views
5

In modalità normale Vim, è possibile premere Ctrl + e e Ctrl +y per scorrere su e giù, rispettivamente. Sto cercando di creare un key-bind che mi consenta di farlo anche dalla modalità di inserimento. Questo è quello che ho:Come si scorre su/giù senza lasciare la modalità di inserimento?

" Scroll up and down while in insert mode. 
inoremap <C-e> <C-o><C-e> 
inoremap <C-y> <C-o><C-y> 

Questo funziona come previsto, ma ha un grande difetto. È lascia la modalità di inserimento, scorre, quindi rientra nella modalità di inserimento. Questo è importante quando si tratta di annullare, ripetere il comando ecc. E vorrei poter scorrere su e giù senza lasciare la modalità di inserimento. Pensieri?

+0

Che dire di tempo per abituarsi al modello di Vim di interazione invece? – romainl

+0

@romainl: Ovviamente, ma non vedo alcun motivo logico per cui non dovrei essere in grado di spostare leggermente la vista su un paio di righe per ottenere una linea specifica nella vista in modalità di inserimento. – Hubro

+0

A chi ha postato la seconda risposta: perché l'hai cancellata? :(È stato molto istruttivo – Hubro

risposta

9

Si potrebbe dare un'occhiata a :h i_CTRL-X_CTRL-E, che è un built-in mapping insert-mode per scorrere:

    *i_CTRL-X_CTRL-E* 
CTRL-X CTRL-E  scroll window one line up. 
     When doing completion look here: |complete_CTRL-E| 

        *i_CTRL-X_CTRL-Y* 
CTRL-X CTRL-Y  scroll window one line down. 
     When doing completion look here: |complete_CTRL-Y| 

Quindi nel tuo caso, questo sarebbe probabilmente fare il trucco:

inoremap <C-e> <C-x><C-e> 
inoremap <C-y> <C-x><C-y> 
+0

+1 Questo è molto interessante e risolve il mio problema, ma non risponde alla domanda. Se lo sai, potresti aggiungere se c'è o meno una funzione incorporata per lo scorrimento in Vim? – Hubro

+0

Bene, puoi anche scorrere nella modalità di inserimento usando il tuo scroll del mouse, trascinando la barra di scorrimento o usando PageUp e PageDown, ma quelli spostano tutti il ​​cursore in modo che probabilmente non è quello che vuoi. In ogni caso, probabilmente è più Vim-esque a fare lo scrolling in modalità normale. –

+1

Non sembrano esserci funzioni integrate per lo scorrimento della finestra, quindi gli script/alias dei mnemonici sono il più vicino possibile. Persino le sessioni e le viste salvate non riescono a ricordare la precisa posizione di scorrimento della finestra. Sono giunto a questa conclusione dopo aver sfogliato la funzione vimScript (http://vimdoc.sourceforge.net/htmldoc/eval.html#functions) e le opzioni (http://vimdoc.sourceforge.net/htmldoc/options.html) Riferimenti. – Daniel

2

undojoin fissa la parte di annullamento di essa:

ino <C-E> <Space><BS><ESC><C-E>:undojoin<CR>gi 

I <Space><BS> s equence si assicura che ci sia un blocco di annullamento con cui unirsi.

Sorprendentemente (per me) questo non aiuta con il . rottura, quindi questo si potrebbe lasciare in altrettanto fastidioso un posto come sei ora ...

Problemi correlati