2010-10-25 14 views
9

In vim, uso Ctrl-n per completare la parola in modalità di inserimento. Se c'è più di una possibile corrispondenza, ottengo un menu a discesa dal quale posso selezionare una delle possibili corrispondenze usando i tasti freccia.completamento della parola vim navigando con 'j' e 'k'

Tuttavia, non voglio usare i tasti freccia; Voglio usare i tasti 'j' e'k '. Ma quando digito "j" o "k", inserisce le lettere invece di andare su o giù nel menu a discesa. C'è un modo in cui posso configurare Vim per fare ciò nel modo che voglio?

+0

Breve parte a questa domanda: dopo pochi anni, mio ​​flusso di lavoro vim è tale che non faccio questo tipo di personalizzazione più. Preferirei che fosse un editor che posso usare ovunque, inclusi server Linux casuali e macchine di altre persone. A tale scopo, uso solo i tasti predefiniti. Per altre cose personalizzate uso emacs. – kerkeslager

risposta

15

Vedere :hpopupmenu-keys.

Non v'è alcuna speciale serie di mappature per il sub-modalità di menu a comparsa, ma si può fare un condizionale mappatura inserto-mode:

inoremap <expr> j pumvisible() ? "\<C-N>" : "j" 
inoremap <expr> k pumvisible() ? "\<C-P>" : "k" 

Questo rende j/k navigare nel menu a comparsa come <C-N>/<C-P> , mentre è visibile.

Addendum: Se si vuole essere in grado di tenere sotto controllo durante la digitazione j e k, è possibile sostituirli con rispettivamente <C-J> e <C-K>,. (Vedi il commento di mwcz a questa risposta.)

+4

Un problema che si potrebbe incontrare durante l'utilizzo di questo metodo è che lui/lei potrebbe voler continuare a digitare dopo aver richiamato il menu di completamento e le lettere che desidera digitare sono "j" o "k". È giusto sapere quali sono le conseguenze in caso di problemi in futuro. – tinifni

+4

@tinifni Si può usare ' j' e' k' per farlo. – ZyX

+4

Dato che hai già premuto Ctrl, trovo comodo usare 'C-j' e' C-k' per navigare nella lista. E non interferisce con la digitazione continua mentre l'elenco è aperto: 'inoremap pumvisible()?"\ ": "\ " 'e ' inoremap pumvisible()? "\ ": "\ " ' – mwcz

7

Non so come sia possibile farlo con j e k. Sei in modalità di inserimento, non funzionano.

Ma, ho un altro modo per voi, Ctrl +N funziona come scheda, ed è possibile utilizzare Maiusc - Tab andare giù la lista e Tab per salire. È più facile che usare i tasti freccia. Ma non bello come j e k.

Oppure si può semplicemente utilizzare Ctrl +N e Ctrl +P

+5

E 'CTRL-Y' per accettare,' CTRL-E' da scartare. – Benoit