Vim
Disponible sur: http://www.vim.org/
Le vi amélioré (vi improved). En recherchant Python sur le site vim.org, vous trouverez divers liens (outils, trucs et astuces, configurations...) concernant l'utilisation de VIM pour l'édition de sources Python, voir pour l'utilisation de Python comme langage outil de script dans VIM. On a ainsi dans vim l'auto-complétion, le code folding, l'aide en ligne sur les librairies...
La configuration de vim s'effectue soit dans ~/.vimrc, soit dans l'arborescence ~/.vim
Dans le cas de l'arborescence il est possible d'indiquer une configuration et des plugins particuliers en fonction du type de fichier. Ainsi tous les scritps du répertoire ~/.vim/ftplugin/python/ seront lancés si l'on ouvre un fichier python.
Il existe une quantité inombrable de plugins, scripts et macros pour ajouter des fonctionalités et configurer vim pour l'édition de sources en python. Ils sont généralement référencés sur le site de vim et chacun doit choisir les siens ! N'hésitez pas à parler de ceux que vous preferez sur cette page...
Si l'on ne trouve pas son bonheur il suffit de les écrire soit-même, soit avec le langage intégré soit en python (voir plus bas).
Utilisation des espaces au lieu de TAB
set ai|set softtabstop=4|set tabstop=4|set shiftwidth=4|set expandtab
Coloration syntaxique
syntax enable
Lancer (F12) / Compiler (F11) le buffer en cours, avec visualisation (\c) des erreurs
"Run the current buffer in python" autocmd BufNewFile,BufRead *.py map <buffer> <F12> :w!<cr>:!python %<cr> autocmd BufNewFile,BufRead *.py imap <buffer> <F12> <esc>:w!<cr>:!python %<cr> "Set some bindings up for 'compile' of python autocmd BufNewFile,BufRead *.py set makeprg=python\ -c\ \"import\ py_compile,sys;\ sys.stderr=sys.stdout;\ py_compile.compile(r'%')\" autocmd BufNewFile,BufRead *.py set efm=%C\ %.%#,%A\ \ File\ \"%f\"\\,\ line\ %l%.%#,%Z%[%^\ ]%\\@=%m autocmd BufNewFile,BufRead *.py nmap <buffer> <F11> :w!<cr>:make<cr> autocmd BufNewFile,BufRead *.py imap <buffer> <F11> <esc>:w!<cr>:make<cr> autocmd BufNewFile,BufRead *.py map <buffer> <leader>c :cope 5<cr>
Plugins
FileExplorer
Ce plugin permet de naviguer dans les répertoires du disque. La liste des fichiers apparaît sur le bord et le ou les fichiers à éditer apparaissent à côté.
Mise en fin de liste des suffixes .pyc .pyo
set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc,.pyc,.pyo
TagList
Ce plugin permet de naviguer dans un code source. Il affiche sous forme arborescente la liste des classes, functions etc.
python_fold
Ce plugin permet de masquer-démasquer des blocs (classes, méthodes, boucles...), ce que l'on nomme "code folding".
scripter vim en python
Il faut que vim soit compilé avec le support python (python-vim ou python-full sous Debian) Ensuite les plugins peuvent être écrits en python
Exemple d'un plugin pour effacer tout le texte jusqu'à la signature (d'un email), à enregistrer dans ~/.vim/ftplugin/mail/
function! Raz2Sign() python << EOF import vim cb = vim.current.buffer cw = vim.current.window row, col = cw.cursor row = row -1 while row<len(cb) and not cb[row].startswith("--"): del cb[row] EOF endfunction map dz <Esc>:call Raz2Sign()<CR>O<Esc>