completamento delle parole vim navigando con 'j' e 'k'
-
26-09-2019 - |
Domanda
In vim, io uso Ctrl + N per parola intera, mentre in modalità di inserimento. Se v'è più di un possibile match, ottengo un menu a discesa da cui posso selezionare una delle possibili corrispondenze utilizzando i tasti freccia.
Tuttavia, non voglio usare i tasti freccia; Voglio utilizzare il 'j' e le chiavi di 'k'. Ma quando si digita 'j' o 'k', inserisce le lettere invece di andare verso l'alto o verso il basso nel menu a discesa. C'è un modo posso configurare vim per fare questo il modo in cui voglio?
Soluzione
Non v'è alcuna speciale serie di mappature per il sub-modalità di menu a comparsa, ma si può fare una mappatura inserto in modalità condizionale:
inoremap <expr> j pumvisible() ? "\<C-N>" : "j"
inoremap <expr> k pumvisible() ? "\<C-P>" : "k"
Questo rende j
/ k
navigare il 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.)
Altri suggerimenti
Non so di un modo per farlo con j, 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 per andare in fondo alla lista e Tab per salire. E 'più facile che usare i tasti freccia. Ma non bello come j, k sarebbe.
Oppure si può semplicemente usare Ctrl + N e Ctrl + P
SuperTab (http://www.vim.org/scripts/script.php?script_id=1643) può aiutare. Una volta installato, è possibile utilizzare Tab e Tab-Shift per navigare nel menu pop-up.
Vedere questo documento anche: http://vim.wikia.com/wiki/Omni_completion_popup_menu