2008-09-10 15 views
23

De manière surprenante, lorsque vous vous familiarisez avec vim, vous pouvez coder encore plus rapidement que les IDE standard tels qu'Eclipse. Mais une chose qui me manque vraiment, c'est la complétion du code, en particulier pour les noms de variables longs et les fonctions.Est-il possible d'activer l'achèvement de code pour Perl dans vim?

Est-il possible d'activer l'achèvement de code pour Perl dans vim?

Répondre

29

Ctrl - P (Obtenir Match précédent) et Ctrl - N (Obtenir Prochain match) sont de type pseudo-code d'achèvement. Ils recherchent essentiellement le fichier (Backwards pour Ctrl - P, forwards pour Ctrl - N) vous modifiez (et tous les tampons ouverts, et si vous utilisez quoi que ce soit TAGS dans votre fichier TAG) pour les mots qui Commencez avec ce que vous tapez et ajoutez une liste déroulante. Cela fonctionne étonnamment bien pour les noms de variables et de fonctions, même si ce n'est pas intellisense. Généralement j'utilise Ctrl - P comme la variable ou la fonction que je recherche est généralement derrière dans le code. Aussi, si vous gardez la même copie de Vim ouverte, il va rechercher les fichiers que vous avez précédemment ouverts.

+0

Ce fonctionnait très bien pour moi, mais je l'ai récemment passé à un nouvel environnement de développement. Maintenant, au lieu de chercher seulement mes tampons ouverts, il semble chercher tout mon arbre source, ce qui prend beaucoup de temps - et seulement cela pour Perl. Comment puis-je voir si ce nouvel environnement utilise TAGS? J'ai essayé ': tag' et j'ai' 'E73: tag stack empty'. Y a-t-il autre chose que des tags qui auraient pu être activés? Le nouvel environnement a également une version légèrement plus récente de vim. Je voudrais l'avoir seulement rechercher les tampons ouverts. – redbmk

7

Eh bien, le mécanisme de complétion générique de Vim est étonnamment bon, utilisant simplement Ctrl-N en mode insertion. En outre, l'achèvement de la ligne est très pratique, en utilisant C-x C-l.

Vérifiez également ce vim script for perl.

9

Vim 7 prend en charge la complétion omni.

Par exemple, j'ai dans mon vimrc

autocmd FileType php set omnifunc=phpcomplete#CompletePHP 

puis, quand je presse Ctrl-x Ctrl-o en mode Insertion, j'obtenir une liste déroulante des possibilités de saisie semi-automatique. Il s'agit d'un omnicfunc for perl. Aucune idée de comment cela fonctionne bien.

3

Ctrl +N

Ceci est expliqué dans le livre Perl Hacks, ainsi que la façon de faire l'achèvement Package. Hautement recommandé.

3

Le clip .vimrc dans l'une des autres réponses est légèrement faux. Pour activer la clé de votre onglet en une clé de remplissage automatique, utilisez ce code:

inoremap <tab> <c-r>=InsertTabWrapper()<cr> 

function! InsertTabWrapper() 
    let col = col('.') - 1 
    if !col || getline('.')[col - 1] !~ '\k' 
     return "\<tab>" 
    else 
     return "\<c-p>" 
    endif 
endfunction 

Vous pouvez trouver cela, et des tonnes d'autres trucs vim in this thread at Perlmonks --which liens vers encore plus de fils avec beaucoup plus personnalisations.

5

Les standards CTRL-N et CTRL-P fonctionnent encore mieux si vous ajoutez ce qui suit à votre ~/.vim/ftplugin/perl.fichier vim:

set iskeyword + =:

Il sera alors les noms des modules auto-complétion, etc.