Utilisation de Vim pour la programmation

Table of Contents

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.2 macro

  1. taper «q+lettre»
  2. taper une «sequence»
  3. finir avec «q»
  4. appliquer la macro : «@+lettre»

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 : «==»

2.6 correction à la volée :

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

  1. Dans le même fichier
    • recherche avant «*»
    • recherche arrière «#»
  2. 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, "»

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

  1. Gstatus : selectionner les fichiers ou bout de fichiers
  2. «C» : ecrire un message de commit + sauvegarde (:w)

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

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

6.1 On pourra consulter avec interêt :

6.2 Aide de vim :help

6.3 le tuto de vim intégré : vimtutor

6.4 le bouquin Practical Vim

6.6 Vim casts

Date: 13 Décembre 2016

Author: Fuentes Marc

Created: 2019-11-15 or. 18:56

Validate