Utilisation de Vim pour la programmation
Table of Contents
- 1. Prérequis
- 2. Edition
- 3. Se déplacer dans les sources
- 4. Compilation - Gestion des Erreurs
- 5. Gestion de version
- 5.1. diff
- 5.2. vimfugitive
- 5.2.1. Télécharger depuis https://github.com/tpope/vim-fugitive/
- 5.2.2. appel classique a Git : :Git command
- 5.2.3. Pour faire un commit
- 5.2.4. Gblame : équivalent d'un Git blame
- 5.2.5. Gdiff <revision>: permet d'ouvrir un mode difference avec une version de revision
- 5.2.6. Gdiff : ouvre un diff entre le fichier courant et sa version d'index ;
- 5.2.7. Ggrep : enveloppe pour git grep
- 5.2.8. Gread : charge dans le buffer courant la version du fichier courant de l'index
- 5.2.9. Gread <revision>:% : charge dans le buffer courant une version de revision
- 5.2.10. Gwrite : ajoute le fichier courant a l'index (ou la zone de transit)
- 6. Références
Ce fichier est disponible en ligne à http://sed.bordeaux.inria.fr/org/vim.org
1 Prérequis
1.1 Utilisation basique de Vim
1.1.1 ouvrir un fichier : :e, :new
1.1.2 editer : a, i, x, d
1.1.3 déplacement : i, j, k, l, f, F, t, T, «,», «;», $, gg, G
1.1.4 quitter : :wq, ZZ, ZX
1.1.5 registres
1.2 Gestion de version
1.2.1 git commit, git push, git pull
1.2.2 notion d'index, de zone de transit
2 Edition
2.1 répétition
2.1.1 le «point»
2.1.3 substitution
:<domaine>s/texte_à_remplacer/texte_de_remplacement/options
avec domaine є {«.», «%» «<,>»} et options є { «g», «c»}
2.2 complétion
2.2.1 contexte : «Ctrl-P», «Ctrl-N»
2.2.2 omniccpcomplete «Ctrl-X, Ctrl-O»
2.3 coloration syntaxique
2.3.1 mettre dans ~/.vimrc
filetype on
filetype plugin on
filetype plugin indent on
2.4 dictionnaires (e.g. pour latex)
2.4.1 choisir un dictionnaire
:setlocal spell spelllang=fr_FR
2.4.2 se deplacer sur les erreurs : «]s», «[s»
2.4.3 corriger : «z=»
2.4.4 ajouter des mots : «zg», «zG»
2.5 indentation
2.5.1 régler le nombre d'espaces
:set cindent shiftwidth=4
2.5.2 indenter : «==»
3 Se déplacer dans les sources
3.1 historique
3.1.1 avance : Ctrl-I
3.1.2 arrière : Ctrl-O
3.2 relativement aux structures
3.2.1 fonctions : ]], [[
3.2.2 declarations : gd,
3.3 suivre les occurences d'un mot
- Dans le même fichier
- recherche avant «*»
- recherche arrière «#»
- Dans un projet
- on lance un
grep
externe avec résultat dans la fenêtre de localisation
:lgrep -R <expr> path/to/project
:lop
- naviguer sans la fenêtre de localisation ouverte : lne, lpre
- on peut coller une selection sur la ligne de commande : «Ctrl-R, "»
- on lance un
3.4 Étiquettes («tags»)
3.4.1 Construire le fichier d'étiquettes avec exuberant ctags [http://ctags.sourceforge.net/]
$ cd /path/to/sources
$ ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ --exclude=@.ctagsignore
3.4.2 navigation :
- :tj nomdefonction ⇒ liste de choix
- se placer sur un identifiant : «g Ctrl-]» ⇒ liste de choix
- remonter dans la pile des étiquettes : «Ctrl-T»
- «:tn», «:tp» pour suivre les différentes étiquettes
3.5 Tampons («buffers»)
3.5.1 Vim a un système de tampons d'édition
- liste des tampons: :ls
- basculer au tampon précédent: Ctrl-^
- acceder au tampon <num>: b <num>
- supprimer le tampon <num> : bd <num>
3.5.2 Extension Bufexplorer http://www.vim.org/scripts/script.php?script_id=42, utilisation aisée, avec un menu
- « <leader>be »
- ouverture d'un tampon : Return
- suppression d'un tampon : « d »
4 Compilation - Gestion des Erreurs
4.1 outils externes :
- executer une commande
:! <commande>
- executer une commande en récuperant la sortie
:r! <commande>
- fenêtre d'édition du mode commande : permet de réediter des commandes précédentes «q:»
4.2 compilation
- executer make en récupérant les erreurs dans une liste de localisation
:lmake <command>
- on peut aussi redéfinir la variable make
:set makeprg=pdflatex\ %
5 Gestion de version
5.1 diff
5.1.1 prendre en compte la fenêtre courante
:diffthis
5.1.2 se deplacer dans les différences : «[c», «]c»
5.1.3 donner la modif courante au voisin
dp
:[domaine]diffput
5.1.4 prendre la modif elementaire du voisin
do
:[domaine]diffget
5.1.5 mettre-à jour les différences
:diffupdate
5.2 vimfugitive
5.2.1 Télécharger depuis https://github.com/tpope/vim-fugitive/
5.2.2 appel classique a Git : :Git command
5.2.3 Pour faire un commit
5.2.4 Gblame : équivalent d'un Git blame
5.2.5 Gdiff <revision>: permet d'ouvrir un mode difference avec une version de revision
5.2.6 Gdiff : ouvre un diff entre le fichier courant et sa version d'index ;
util pour faire un commit sur une partie du fichier