Vim, Python et Django autocomplétion (pysmell?)
Quelqu'un sait-il comment configurer l'achèvement automatique pour fonctionner correctement avec Python, django et vim?
J'ai essayé d'utiliser pysmell, mais je n'arrive pas à le configurer correctement (ou peut-être que je ne sais pas comment cela fonctionne). En ce moment, je lance pysmell dans le répertoire django (j'utilise le tronc) et déplace les balises résultantes dans mon répertoire de projet, puis je lance également pysmell dans le répertoire du projet. Vim ne récupère pas les tags django, cependant, et ils ne sont pas complétés automatiquement.
Fait quelqu'un sait comment configurer l'achèvement automatique dans vim afin qu'il complète les longues fonctions django (comme get_object_or_404) ainsi que les classes/fonctions dans mon propre code? J'ai fouiné sur google mais je n'ai pas trouvé de bonnes ressources.
Merci.
5 réponses
Tout d'abord, merci de poser cette question, car cela m'a forcé à comprendre cela moi-même et c'est génial!
Voici la page que j'ai utilisée comme référence: pysmell V0. 6 publié : orestis.gr
- installez PySmell à l'aide de la commande
setup.py install
. - générez le fichier
PYSMELLTAGS
pour django en allant dans votre répertoiresite-packages/django
et en exécutant:pysmell . -o ~/PYSMELLTAGS.django
- Copiez ce fichier dans le répertoire de votre projet, puis exécutez
pysmell .
pour générer les PYSMELLTAGS du projet fichier - assurez-vous que pysmell est dans votre
PYTHONPATH
(export PYTHONPATH=${PYTHONPATH}:/path/to/pysmell/
) - exécuter vim (
vim .
) - Source
pysmell.vim
(:source /path/to/pysmell/pysmell.vim
) - définit la commande de saisie semi-automatique(
:set omnifunc=pysmell#Complete
) - tapez ^x^o pour la saisie semi-automatique et cela devrait fonctionner
Je me rends compte que ce n'est pas une solution durable, mais vous devriez pouvoir l'utiliser comme un début pour le configurer pour toujours fonctionner (par exemple, ajouter l'exportation à votre .bashrc, ajouter le: source à votre .vimrc, le programme d'installation autocmd FileType python set omnifunc=pysmell#Complete
, etc.)
Faites-moi savoir si cela est suffisant pour vous aider à démarrer. Il a travaillé pour moi!
Modifier
J'ai simplement ajouté ça à mes .vimrc et aussi longtemps que le PYSMELLTAGS
& PYSMELLTAGS.django
les fichiers sont à la racine de mon projet, cela fonctionne bien sans autre travail:
python << EOF
import os
import sys
import vim
sys.path.append("/usr/local/python/lib/python2.5/site-packages")
EOF
exe ":source ~/src/pysmell/pysmell.vim"
autocmd FileType python set omnifunc=pysmell#Complete
Comme je l'ai écrit ailleurs, j'ai développé des Jedi. Je pense vraiment que c'est beaucoup mieux que toutes les solutions existantes (même PyCharm).
Https://github.com/davidhalter/jedi-vim
Il est construit sur pythoncomplete et beaucoup plus puissant!
Cela fonctionne pour le code complexe:
Et a des fonctionnalités supplémentaires:
Il y a une liste de toutes les fonctionnalités possibles:
- prise en charge des fonctions/classes intégrées
- complexe module / fonction / Classe structures
- ignore les erreurs de syntaxe et d'indentation
- rendements / rendements multiples
- affectations de tuple / indexation de tableau / indexation de dictionnaire
- exceptions / avec-déclaration
- *args / **kwargs
- décorateurs
- descripteurs -> propriété / staticmethod / classmethod
- fermetures
- générateurs ( déclaration de rendement) / itérateurs
- prise en charge de certaines méthodes magiques:
__call__
,__iter__
,__next__
,__get__
,__getitem__
,__init__
- prise en charge de la liste.ajouter, ensemble.ajouter, à la liste.étendre, etc.
- (imbriqué) liste compréhensions / expressions ternaires
- importations relatives
-
getattr()
/__getattr__
/__getattribute__
- les annotations de fonction (fonction py3k, sont ignorées en ce moment, mais en cours d'analyse. Je ne sais pas quoi faire avec eux.)
- décorateurs de classe (fonction py3k, sont également ignorés, jusqu'à ce que je trouve une utilisation cas, cela ne fonctionne pas avec les Jedi)
- simple / habituel
sys.path
modifications -
isinstance
vérifie si/si/assert
Le texte d'Alt http://blog.dispatched.ch/wp-content/uploads/2009/05/vim-as-python-ide.png
Vous pouvez configurer VIM avec buffers, buffer display, Auto complete, même PY Doc display.
J'ai eu de la chance avec exubérant-ctags pour cela.
J'utilise cette macro dans mon vimrc:
execute 'map :!/usr/bin/exuberant-ctags -f '.&tags.' --recurse '.$_P4ROOT.' '
Vous voudrez le modifier légèrement, afin qu'il inclue votre répertoire python / site-packages / django / ainsi que votre propre code.
Ensuite, appuyez sur F2 dans vim pour mettre à jour les balises, et utilisez les liaisons de balises vim régulières pour naviguer.
Aujourd'hui, vous n'avez pas besoin d'extensions spéciales pour la saisie semi-automatique de django dans vim. Assurez-vous que vous avez Vim avec le support python. Pour le vérifier, tapez xterm:
Vim --version / grep python
Sortie:
+python -python3 +quickfix +reltime +droitele -ruby +scrollbind +signes ... ...
Pour faire fonctionner la saisie semi-automatique, ajoutez ces lignes dans votre .vimrc:
Autocmd FileType Python set omnifunc = pythoncomplete#Complete
Si a("python")
Python import sys, os
Python sys.chemin.append('/home/sergey/espace de travail/django')
Système D'exploitation Python.environ ['DJANGO_SETTINGS_MODULE'] = ' djangoProject.paramètres'
Finsi
Où:
- sys.chemin.append est le chemin d'accès à votre répertoire de l'espace de travail django
- djangoProject est le nom de votre projet django, qui va juste après '/ home / sergey/workspace / django '
Enfin, enregistrez-le et redémarrez vim. Maintenant, après avoir".', vous appuyez sur Ctrl-X Ctrl-o par défaut pour obtenir votre saisie semi-automatique.