Python

De Vim-fr

Via l'adjonction de quelques scripts et l'activation de certaines options, Vim peut se transformer en un puissant éditeur pour le langage Python. Cette page est dédiée au partage de conseils et d'astuces permettant d'optimiser et de rendre plus agréable votre pratique du Python sous Vim.

Meilleure indentation

Pour avoir une indentation plus adaptée à Python que celle de base fournie dans vim, téléchargez le plugin indent/python.vim et placez le dans ~/.vim/indent/.

Vous devrez aussi rajouter ce code à votre vimrc afin qu'il soit activé automatiquement à la lecture d'un fichier python:

filetype plugin indent on

Cf ce billet pour plus d'explications, et pour pouvoir améliorer également l'indentation des commentaires.

Filetype plugin

Dans le répertoire $HOME/.vim/ftplugin (sur *nix), déposez un fichier python.vim avec les instructions de configuration que vous voulez spécifiquement exécuter pour l'édition de fichiers python. Pour que ce fichier soit lu, il est nécessaire d'activer "filetype plugin".

Le fichier peut contenir les instructions suivantes :

" $HOME/.vimrc/ftplugin/python.vim
" activer le filetype plugin avec la commande suivante dans le vimrc :
" if has("autocmd")
"   filetype plugin on
" endif
 
 
" Active l'auto-complétion pour python
set omnifunc=pythoncomplete#Complete
 
" Quelques recommandations PEP8
"
" nombre d'espaces par tab
setlocal tabstop=4
 
" nombre de caractères utilisé pour l'indentation:
setlocal shiftwidth=4
 
" pour convertir les tabs en espaces
setlocal expandtab
 
" pour que backspace supprime 4 espaces:
setlocal softtabstop=4
 
" sur pression de la touche F3, highlight les caractères qui dépassent la 80ème colonne
map <silent> <F3> "<Esc>:match ErrorMsg '\%>80v.\+'<CR>"
 
" met en surbrillance les espaces et les tabs en trop
" pas réellement pour le python mais j'aime bien
highlight RedundantSpaces ctermbg=red guibg=red
match RedundantSpaces /\s\+$\| \+\ze\t\|\t/

Divers

Si vous voulez forcer les autres utilisateurs de vim, qui éditent votre fichier python, à respecter vos conventions, rajoutez cette ligne à la fin de vos fichiers:

# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:

Une fonction qui convertit tous les tabs en espaces, et met les fichiers mac et dos au format unix:

fun CleanText()
 let curcol = col(".")
 let curline = line(".")
 exe ":retab"
$//ge"xe ":%s/
/ /ge"xe ":%s/
 exe ":%s/ \\+$//e"
 call cursor(curline, curcol)
endfun

Pour placer l'appel de fonction sur F6:

map <F6> :call CleanText()<CR>

Pour exécuter le script python que l'on est en train d'éditer, en appuyant sur la touche F4:

map <silent> <F4> "<Esc>:w!<cr>:!python %<cr>"

Documentation python

Pour pouvoir accéder à la documentation python dans Vim, vous pouvez utiliser l'extension pydoc.

Coloration Syntaxique

Vim supporte la coloration syntaxique (affichage des fonctions, mot-clefs, etc. dans différentes couleurs) pour Python. Si cela ne s'affiche pas, activez la avec la commande:

:syntax enable

La coloration incluse de base dans Vim n'est toutefois pas optimale. Il existe un (en) script l'améliorant.

Il est disponible en 2 versions, une pour Python 2.X et une autre pour le nouveau Python 3. Pour l'installer, vous pouvez simplement copier les fichiers .vim dans le dossier ~/.vim/syntax.

Auto-complétion

Voilà quelque chose de très pratique. Vous utilisez peut-être déjà l'auto-complètement (auto-completion en anglais, l'anglicisme est accepté) , vous trouvez ça très utile, et vous aimeriez que ça marche avec la bibliothèque standard de Python. Sachez que c'est tout à fait possible.

Voici un exemple d'utilisation :

Screenshot-20090920 1531.png

N'est-ce pas tout simplement génial ?

Procédure d'utilisation

Depuis vim 7, il n'y a plus besoin d'aucun script supplémentaire. Vérifiez simplement que votre vim a été compilé avec le support python.

FIXME Parler du script pythoncomplete.

Tapez simplement : vim --version | grep python en console. Si vous trouvez +python, c'est parfait, vous pouvez passer cette étape.

Sinon, installez selon votre distribution :

  • Archlinux : Le support de python n'est pas dans le paquet vim, mais on peut l'avoir avec le paquet gvim. gvim va remplacer votre exécutable vim, et vous aurez alors un vim avec beaucoup plus d'options de compilation.
  • Autres distributions : FIXME

Utilisation

Créez un objet, du type que vous voulez, ConfigParser par exemple. Tapez le nom de votre variable, suivi de .<CTRL>X<CTRL>O. Vous verrez alors apparaitre la liste des méthodes correspondantes. Notez, qu'on tape la variable, puis le point, puis le <CTRL>X, puis le <CTRL>O, sinon vous êtes très souple des doigts, et dans ce cas passez à Emacs (rachetez-vous des doigts avant). Pour atteindre les autres méthodes, refaites simplement un <CTRL>O jusqu'à atteindre la ligne voulue.

Quickfix

Quickfix est un analyseur d'output de compilateur qui permet de naviguer très agréablement entre les erreurs. Pour utiliser quickfix avec python, rajoutez ces 2 lignes dans votre .vimrc ou .vim/ftplugin/python.vim.

set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m
set makeprg=python

Et pour "compiler" votre code:

:mak[e] <fichier>

Refactoring

Hé oui on peut faire du refactoring en python dans vim, tout ça grâce au Bicycle Repair Man ! (et ça déchire).

Pour ce faire téléchargez la dernière version de ce fabuleux programme (en) ici, extrayez les fichiers de l'archive, puis une fois dans le répertoire un petit:

./setup.py install --prefix=~/.local

pour installer ça en local (pas obligé) pour éviter de tout cochonner, puis un petit:

cp ide-integration/bike.vim ~/.vim/plugin

et c'est installé.

Toutes les commandes que j'ai pu trouver jusqu'à présent commencent par :Bike, et en lisant vite fait le .vim je n'en ai pas trouvé d'autres. C'est vraiment puissant. Pour vous donner une idée, sélectionnez en visuel du code python, puis faite un :BikeExtract, entrez un nom de fonction et magie: un appel à cette fonction (voir un return) se retrouve là où le code sélectionné était, et une nouvelle fonction est créée. Vous n'avez plus d'excuse pour ne plus refactorer votre code maintenant !

Vérification de code

Vim permet d'analyser directement votre code sans devoir quitter l'éditeur, plusieurs méthodes sont disponibles pour cela, elles sont décrites dans la page Verification Python.

Voir aussi