Vim
Contents
-
Vim
- Utilisation basique
-
Trucs & astuces
- Afficher l'état du document
- Ouvrir plusieurs documents simultanément et passer de l'un à l'autre
- Activer la coloration syntaxique
- Insérer le contenu d'un fichier dans le document (où <fichier> est un nom de fichier)
- Insérer la sortie d'affichage d'un programme externe dans le document (où <cmd> est une commande shell)
- Moduler le contenu du document à travers un programme externe (où <cmd> est une commande shell)
- Incrémenter/décrémenter un nombre (ou <motX>)
- Complétion sur un mot ou une ligne (si le mot existe déjà dans le document)
- Effacer les espaces/tabulations devant une ligne
- Aller à la prochaine occurrence de <mot>
- Passer toute une ligne en minuscules/majuscules
- Aller-venir entre les parenthèses/crochets/accolades
- Désactiver l'auto-indentation le temps d'un copier/coller
- Recherche dans un document
- Remplacement d'un motif dans le document
- Insertion d'une chaîne de caractères dans ou devant un bloc de texte
- Marquer un endroit dans le document (où X est une lettre)
- Numéroter les lignes
- Indenter plusieurs lignes d'un seul coup
- Extraire un ensemble de lignes dans un nouveau fichier
- Visualiser les caractères spéciaux (tabulations, fins de lignes etc.)
- Se débarasser des ^M en fin de ligne
- Supprimer toutes les lignes contenant un certain motif
- Compiler un code source C sans quitter Vim
- Retourner au dernier endroit modifié du fichier
- Effectuer des opérations mathématiques à la volée (en mode insertion)
- Ouvrir dans Vim un fichier dont le chemin/nom est dans le buffer actuel
- Remplacer du texte depuis le curseur jusqu'à un emplacement spécifique dans une ligne
- Enregistrer un fichier pour lequel vous n'avez pas le droit d'écriture
- Masquer les commentaires dans un fichier
Utilisation basique
Se déplacer dans un document
<flèches directionnelles> déplacement selon les flèches
w aller au prochain mot
b aller au début du mot (et des mots précédents)
e aller à la fin du mot (et des mots suivants)
^ aller au début de la ligne
$ (ou 0) aller à la fin de la ligne
gg aller au début du document
G aller à la fin du document
:X aller à la ligne X (où X est un nombre)
( aller au début de la phrase
) aller à la fin de la phrase
{ aller au début du paragraphe
} aller à la fin du paragraphe
Éditer un document en mode "insertion"
a commence l'insertion après le curseur A commence l'insertion à la fin de la ligne C Supprime le reste de la ligne à partir du curseur et passe en mode insertion e commence l'insertion après le mot i (ou touche <Insert>) commence l'insertion depuis le curseur I commence l'insertion depuis le début de la ligne o commence l'insertion à la ligne suivante O commence l'insertion à la ligne précédente s commence l'insertion en effaçant le caractère sous le curseur S commence l'insertion en effaçant la ligne entière <Echap> quitter le mode édition
Manipulation de texte
v passer en mode sélection "visuelle" (touche <Echap> pour en sortir) V passer en mode sélection "visuelle" par ligne ctrl-v passer en mode sélection "visuelle" par bloc dd couper la ligne entière dX couper la ligne ainsi que les X prochaines (où X est un nombre) D couper à partir du curseur yy (ou Y) copier la ligne yX copier la ligne ainsi que les X prochaines (où X est un nombre) p coller après le curseur P coller avant la ligne rX substitue le caractère sous le curseur par X
Annuler/rejouer une action
u annuler ctrl-r rejouer
Sauvegarder/quitter
:w sauvegarder (:w! pour forcer la sauvegarde si avertissement) :q quitter Vim (:q! pour quitter sans sauvegarder) :x quitter en sauvegardant (équivaut à :wq)
Gestion des buffers
Dans Vim, les buffers sont assimilables à des fichiers en cours d'édition dans une seule instance de Vim. Voici comment les utiliser au mieux :
:e ouvrir un fichier dans un nouveau buffer :ls lister les buffers :bn aller au buffer suivant :bp revenir au buffer précédent :bd détruire le buffer courant (= à clore le fichier) :bX aller au buffer X (où X est un nombre entier, cf. :ls pour les identifiants des buffers existants) ctrl+^ intervertir le buffer courant avec le précédent
Trucs & astuces
Afficher l'état du document
ctrl-g
Ouvrir plusieurs documents simultanément et passer de l'un à l'autre
Ouvrir plusieurs fichiers en même temps :
vi fic1 fic2 fic3
Pour passer de l'un à l'autre en descendant :
:n
Pour passer de l'un à l'autre en remontant :
:N
Activer la coloration syntaxique
:syn on :set background=dark (si terminal sur fond sombre)
Insérer le contenu d'un fichier dans le document (où <fichier> est un nom de fichier)
:r <fichier>
Insérer la sortie d'affichage d'un programme externe dans le document (où <cmd> est une commande shell)
!!<cmd>
Moduler le contenu du document à travers un programme externe (où <cmd> est une commande shell)
:%!<cmd>
Incrémenter/décrémenter un nombre (ou <motX>)
ctrl-a (incrémente) ctrl-x (décrémente)
Complétion sur un mot ou une ligne (si le mot existe déjà dans le document)
En mode insertion :
ctrl-p (sur un mot : autocomplète le mot, ou affiche une liste des complétions possibles) ctrl-x ctrl-l (sur une ligne : autocomplète la ligne courante si une ligne similaire existe)
Effacer les espaces/tabulations devant une ligne
dw (en début de ligne)
Aller à la prochaine occurrence de <mot>
* (sur le mot ; recherche descendante) # (recherche ascendante)
Passer toute une ligne en minuscules/majuscules
guu passer la ligne en lettres minuscules gUU passer la ligne en lettres majuscules
Aller-venir entre les parenthèses/crochets/accolades
% (sur le crochet/accolade/parenthèse)
Désactiver l'auto-indentation le temps d'un copier/coller
:set paste (collez votre texte, puis ":set nopaste" pour réactiver l'auto-indentation)
Recherche dans un document
/<mot> (recherche descendante) ?<mot> (recherche ascendante)
Par défaut la recherche est sensible à la casse, pour lancer une recherche insensible à la casse, il faut précéder <mot> par \c :
/\c<mot> (recherche descendante) ?\c<mot> (recherche ascendante)
Il est possible de paramétrer définitivement Vim pour que les recherches ne soient pas sensibles à la casse, en ajoutant la directive suivante dans votre .vimrc :
set ignorecase set hlsearch (pour mettre surbrillance les résultats de la recherche)
Remplacement d'un motif dans le document
:%s/regexp/remplacement/g ("/gc" pour demander confirmation à chaque remplacement)Il est possible de concentrer cette opération sur un intervalle de lignes :
:10,20s/regexp/remplacement/g (n'effectue la substitution que des lignes 10 à 20 inclues)
Insertion d'une chaîne de caractères dans ou devant un bloc de texte
Sélectionnez le bloc de texte concerné en mode "visuel en bloc" (ctrl+v), puis : I (tapez ensuite votre chaîne de caractère ou simple caractère, par exemple "#" pour commenter tout un bloc) <Echap>
Marquer un endroit dans le document (où X est une lettre)
mX (poser une marque) `X (revenir à la marque)
Numéroter les lignes
:set number :set nonumber (pour désactiver l'affichage)
Indenter plusieurs lignes d'un seul coup
== sur une ligne seule, ou = sur un ensemble de lignes sélectionnées en mode visuel N>> (où N est un entier ; par exemple "5>>" indente 5 lignes à partir du curseur)
Extraire un ensemble de lignes dans un nouveau fichier
:1,10w nouveau_fichier.txt (ici, copie de la ligne 1 à la ligne 10 dans le fichier nouveau_fichier.txt)
Visualiser les caractères spéciaux (tabulations, fins de lignes etc.)
:set list
Se débarasser des ^M en fin de ligne
:%s/\r//g
Supprimer toutes les lignes contenant un certain motif
:g/regexp/d
Ainsi, il est par exemple possible de supprimer toutes les lignes commentées dans un fichier de configuration (:g/^#/d si le caractère de commentaires est "#").
Compiler un code source C sans quitter Vim
:set makeprg=gcc\ -o\ %<\ % (générera un exécutable nommé d'après le fichier source sans le suffixe .c)
Retourner au dernier endroit modifié du fichier
’. déplace le curseur au début de ligne où la dernière modification a eu lieu ou `. positionne le curseur sur l'emplacement exact de la dernière modification
Effectuer des opérations mathématiques à la volée (en mode insertion)
CTRL-R=24*24 (insère 576 sous le curseur)
Ouvrir dans Vim un fichier dont le chemin/nom est dans le buffer actuel
gf (ouvre le fichier dont le nom est écrit sous le curseur)
Remplacer du texte depuis le curseur jusqu'à un emplacement spécifique dans une ligne
cw remplace le texte depuis le curseur jusqu'à la fin du mot courant c/ remplace le texte depuis le curseur jusqu'à la première occurrence de la chaîne recherchée
Enregistrer un fichier pour lequel vous n'avez pas le droit d'écriture
Un grand classique : ouvrir un fichier en édition en oubliant de passer en root ou bien d'utiliser sudo. Plutôt que de refermer le fichier sans valider les modifications, le rouvrir avec les bons droits et enfin de refaire toutes les modifications, il est possible d'enregistrer tout de même le fichier pour peu que vous disposiez des droits via sudo :
:w !sudo tee %
Masquer les commentaires dans un fichier
Certains fichiers de configuration de logiciels peuvent être très généreux en explications au travers de commentaires pour leurs directives, si bien qu'il est parfois difficile de les lire efficacement. Vim dispose d'une fonctionnalité nommée folds ("plis") qui permet de masquer des portions de texte dans le buffer en cours d'édition (sans modifier réellement le fichier), et typiquement nous pouvons utiliser cette fonctionnalité pour masquer tous les commentaires d'un fichier de configuration et ne garder affichées que les lignes réellement pertinentes :
:set fdm=expr :set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
Pour "déplier" temporairement un bloc de commentaires (un bloc correspondant dans ce cas à plusieurs lignes consécutives commençant par le caractère "#"), placez votre curseur sur le pli correspondant au bloc compacté et tapez zo (ou pressez simplement <espace>), et zm pour le replier. Si vous avez déplié plusieurs blocs, vous pouvez tous les replier d'un coup avec zM ; à l'inverse, vous pouvez déplier tous les blocs d'un seul coup avec zi. Source : Erik Rossen. Plus d'informations : Vim tips: Folding fun sur linux.com.