l'achèvement du mot vim navigation avec « j » et « k »
-
26-09-2019 - |
Question
Dans vim, j'utilise Ctrl-n pour mot tout complet en mode d'insertion. S'il y a plus d'un match possible, je reçois un menu déroulant à partir de laquelle je peux sélectionner l'une des correspondances possibles à l'aide des touches fléchées.
Cependant, je ne veux pas utiliser les touches fléchées; Je veux utiliser les touches « j » et « k ». Mais quand je tape « j » ou « k », il insère les lettres au lieu d'aller vers le haut ou vers le bas dans le menu déroulant. Est-il possible que je peux configurer vim pour le faire comme je le veux?
La solution
Voir :h
popupmenu-keys
.
Il n'y a pas ensemble spécial de correspondances pour le menu contextuel sous-mode, mais vous pouvez faire une cartographie insertion en mode conditionnel:
inoremap <expr> j pumvisible() ? "\<C-N>" : "j"
inoremap <expr> k pumvisible() ? "\<C-P>" : "k"
Cela rend j
/ k
Naviguer dans le menu contextuel comme <C-N>
/ <C-P>
, alors qu'il est visible.
Addendum: Si vous voulez être en mesure de tenir le contrôle pendant que vous tapez j
et k
, vous pouvez les remplacer par <C-J>
et <C-K>
, respectivement. (Voir le commentaire de mwcz à cette réponse.)
Autres conseils
Je ne sais pas d'une façon comment le faire avec j et k. Vous êtes en mode d'insertion, ils ne fonctionnent pas.
Mais, j'ai une autre façon pour vous, Ctrl + N fonctionne comme Tab, et vous pouvez utiliser Maj - Tab pour la liste et Tab pour monter. Il est plus facile que d'utiliser les touches fléchées. Mais pas aussi beau que j et k serait.
Ou vous pouvez simplement utiliser Ctrl + N et Ctrl + P
SuperTab (http://www.vim.org/scripts/script.php?script_id=1643) peut vous aider. Une fois installé, vous pouvez utiliser Tab et Tab-Shift pour naviguer dans le menu contextuel.
Voir ce doc aussi: http://vim.wikia.com/wiki/Omni_completion_popup_menu