2009-02-05 4 views
2

Je souhaite que le menu d'achèvement de Vim fonctionne plus comme celui de Visual Studio. Je veux être capable d'écrire le début d'une variable (ou quelque chose dont l'achèvement est disponible), appuyer sur les touches omni-completion et obtenir le menu d'achèvement. Maintenant, je veux que le menu de complétion mette en évidence la meilleure correspondance mais ne l'ajoute pas au tampon. Maintenant, je veux être en mesure de soit appuyer sur ENTRER pour entrer l'élément sélectionné ou entrer plus de lettres pour filtrer le menu de complétion encore plus (en mettant éventuellement un nouvel élément dans le menu de complétion) puis appuyer sur Entrée pour insérer.Rendre le travail d'achèvement de Vim plus proche de celui de Visual Studio

La page wiki/conseils au http://vim.wikia.com/wiki/Make_Vim_completion_popup_menu_work_just_like_in_an_IDE est censé faire cela, mais je ne peux pas le faire fonctionner. Est-ce que quelqu'un d'autre a essayé le code de cette astuce et l'a fait fonctionner comme je le décris?

+0

Quelle version de vim utilisez-vous? –

+0

vim 7.1 (patchs 1-314). J'utilise aussi vim ordinaire NOT gvim. – Marlun

Répondre

5

La page wiki référencée contenait des mappages brisés. Un utilisateur (Spiiph) a changé le code de Vim pour quelque chose qui lui a semblé meilleur, mais n'était pas juste. J'ai inversé les changements qu'il a faits et maintenant les instructions inoremap devraient fonctionner.

Pour éviter toute confusion ceux-ci sont à mon humble avis les commandes à droite:

inoremap <expr> <c-n> pumvisible() ? "\<lt>c-n>" : "\<lt>c-n>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>" 
inoremap <expr> <m-;> pumvisible() ? "\<lt>c-n>" : "\<lt>c-x>\<lt>c-o>\<lt>c-n>\<lt>c-p>\<lt>c-r>=pumvisible() ? \"\\<lt>down>\" : \"\"\<lt>cr>" 

PS: En ce qui concerne l'utilisation de la fonction d'achèvement de l'Vim j'ai trouvé SuperTab script très pratique. Peut-être que ce script est aussi intéressant pour vous dans ce contexte ...

0

J'utilise SuperTab, que je l'aime vraiment, et semble travailler suivant une grande:

imap <expr> <Tab> pumvisible() ? "<Tab>" : "<Tab><Down>" 

Pour référence: Je suis en cours d'exécution debian Sid, et cela fonctionne à la fois pour vim 7.2.245 et pour mon patched 7.2.259.

Questions connexes