Eclats de vers : Ordina 05 : Édition

Index des Grimoires

Retour à l’accueil

Table des matières

1 Pageurs

1.1 More

<espace> Page vers le bas
b Page vers le haut
v Édition du fichier dans l'éditeur par défaut

1.2 Less

1.2.1 Généralités

= Informations sur le fichier courant
<ctrl l> Recharge l'affichage
   

1.2.2 Options

_/option/ Description d'une option
-option Modifie une option
-+/option/ Valeur par défaut de l'option
   
1.2.2.1 Liste
-M Beaucoup d'informations dans la ligne de statut
-N Affiche une colonne avec les numéros de lignes
-J Affiche une colonne avec les lignes contenant une correspondance de recherche
-G Ne met pas en évidence les occurences de recherche
-g Ne met en évidence que la dernière occurence de recherche
-i Recherche insensible à la casse, sauf si le motif contient des majuscules
-r Les caractères de contrôle sont interprétés
-W Met en évidence la première ligne après chaque mouvement vers le bas
-n Décalage entre la page réelle et la page de défilement
-# Nombre de caractères pour le défilement horizontal
-s Transforme plusieurs lignes vides consécutives en une seule

1.2.3 Édition

:e Édite un fichier et l'ajoute à la liste des fichiers
:n Fichier suivant
:p Fichier précédent
N :x Va au /N/<sup>ième</sup> fichier
:d Efface le fichier courant de la liste des fichiers
q Quitte
s Sauve dans un fichier (uniquement si le flux provient d'un tube)
1.2.3.1 Dynamique
R Recharge le fichier
F Se place en fin de fichier et reste à l'écoute de la suite au cas où le fichier change

1.2.4 Mouvements

<espace> Page vers le bas
f  
b Page vers le haut
d Demi-page vers le bas
u Demi-page vers le haut
g Début du fichier
G Fin du fichier
<alt (> Défilement vers la gauche
<alt )> Défilement vers la droite
1.2.4.1 Signets
m Définit un signet
' Va à un signet

1.2.5 Recherche

? Recherche arrière
n Occurrence suivante
N Occurrence précédente
/* Recherche avant dans tous les fichiers passés en ligne de commande
?* Recherche arrière dans tous les fichiers passés en ligne de commande
/! Recherche avant des lignes ne correspondant pas au motif
& motif Affiche seulement les lignes qui correspondent au motif
&! motif Affiche seulement les lignes qui ne correspondent pas au motif
<alt u> Annule la mise en évidence des correspondances

1.2.6 Commandes

+/commande/ Exécute la commande less à chaque nouveau fichier édité
! Commande shell
¦ signet commande Envoie le texte entre le haut de l'écran et le signet à l'entrée d'une commande

1.2.7 Programmes externes

v Édition du fichier dans l'éditeur par défaut

1.3 Most

<espace> Page vers le bas

2 Ed

2.1 Introduction

Ed est un éditeur de texte orienté ligne. Il fonctionne par commandes.

Pour ajouter du texte, on donne le numéro de la ligne suivi de la commande « *a* » et du texte désiré. On termine l'ajout par une ligne contenant uniquement un point. Voici un ajout disposé après la ligne 10 :

10a
Du texte
encore
toujours
dernière ligne ajoutée
.

Le symbole « $ » représente la fin du fichier. Pour ajouter du texte à la fin du fichier, on utilise donc « $a » :

$a
Du texte
.

La commande « *i* » insère le texte avant la ligne donnée. Voici une insertion avant la ligne 9 :

9i
Du texte
.

Voici une insertion ajoutant du texte au début du fichier :

1i
Du texte
.

Lorsqu'aucune ligne n'est fournie à la commande d'ajout ou d'insertion, le texte est ajouté après ou inséré avant la ligne courante.

2.2 Commandes

N Va à la ligne N
$ Va à la fin du fichier
p Affiche la ligne courante
%p Affiche tout le fichier
a Ajoute après la ligne
i Insère avant la ligne
c Change une ou plusieurs lignes
d Supprime une ou plusieurs lignes
e fichier Édite un fichier
E fichier Édite un fichier même si des modifications ne sont pas enregistrées
w Sauve le fichier
w fichier Sauve sous un nom donné
q Quitte
Q Quitte même si des modifications ne sont pas sauvées

2.3 Scripts

On peut faire exécuter à ed un script contenant des commandes ed au moyen de la syntaxe :

ed < /script-ed/

3 Vi - Vim - Gvim

3.1 Généralités

Vim est un éditeur de texte qui dispose de plusieurs modes :

  • Le mode normal est le mode par défaut. Il permet d'entrer des commandes sous la forme de simples caractères ou de combinaisons de caractères.
  • Le mode ex permet d'entrer des lignes de commandes complexes
  • Le mode insertion permet d'entrer du texte
  • Le mode visuel permet de sélectionner du texte

3.1.1 Démarrage

vim Lance vim en mode texte
gvim Lance vim en mode graphique
vim -g  
vi Un alias fréquent pour vim

3.1.2 Aide

Vim dispose d'une aide intégrée. Cette aide est notamment disponible au moyen des commandes ex :

:h Aide
:help  
:h helphelp Comment bien utiliser l'aide
:h commande Aide relative à une commande

3.1.3 Configuration

~/.vimrc Fichier de configuration
~/.vim Répertoire des scripts
~/.vim/plugin Répertoire des extensions
~/.vim/ftplugin Répertoire des extensions relatives à un type de fichier
~/.vim/syntax Répertoire des extensions relatives à la coloration syntaxique

3.2 Mode normal

En mode normal, n'importe quelle touche du clavier est susceptible de faire partie d'une commande. Par exemple, on bascule en mode insertion en une seule touche :

i

On peut alors entrer du texte, puis revenir au mode normal via :

<esc>

Nous verrons beaucoup d'autres commandes du mode normal par la suite.

3.2.1 Intéractions avec le mode insertion

i Passe du mode normal au mode insertion
<ins>  
a Passe en mode insertion au caractère suivant le curseur
A Passe en mode insertion à la fin de la ligne
I Passe en mode insertion au début de la ligne
o Crée une nouvelle ligne sous la ligne courante et passe en mode insertion
O Crée une nouvelle ligne au-dessus de la ligne courante et passe en mode insertion

3.3 Mode ex

Vim dispose d'un interpréteur de commandes interne et d'un mode associé, appelé mode ex. On débute une commande ex par un « : » :

:/commande-ex/

La commande est ensuite validée par <Return>.

3.3.1 Convention

Dans la suite, nous adoptons une convention qui consiste à préfixer les commandes ex par un « : », afin de ne pas les confondre avec les commandes du mode normal.

3.3.2 Multicommande

Notons qu'on peut entrer plusieurs commandes sur une même ligne au moyen de la syntaxe :

:/commande-1/ | /commande-2/

3.3.3 Multiligne

Si on souhaite entre plusieurs lignes de commande ex d'affilée, on peut entrer dans le mode ex multiligne au moyen de la commande du mode normal (et donc non préfixée) :

Q

On entre alors les lignes de commandes ex que l'on souhaite sans devoir les préfixer par un « : ». On quitte ensuite le mode ex multiligne via la commande :

:vi

En résumé, nous avons donc :

: Passe du mode normal au mode ex uniligne
Q Passe du mode normal au mode ex multiligne
:vi Passe du mode ex multiligne au mode normal

3.3.4 Scripts

Le mode ex multiligne est agréable pour entrer quelques commandes, mais si l'on souhaite entre de longs blocs de codes, le mieux est de créer un script, c'est-à-dire un fichier qui accueillera toutes vos commandes. Cerise sur le gâteau, les commandes ex d'un script ne doivent pas être obligatoirement préfixées par un « : ». Un script peut s'exécuter au moyen de la commande :

:source /script/

On peut également l'exécuter au démarrage de vim :

vim -S /script/

3.3.5 Intermode

Il est possible d'exécuter une commande du mode normal à partir du mode ex, il suffit d'utiliser la syntaxe :

:normal /commande-du-mode-normal/

On rencontre ce genre de construction dans les scripts.

3.3.6 Chaîne de caractères

Il est possible d'exécuter le code contenu dans une chaîne de caractères :

:exe /chaine/

3.3.7 Raccourcis

Voici quelques raccourcis disponibles dans le mode ex :

<ctrl u> Efface du curseur jusqu'au début de la ligne
<ctrl w> Efface le mot précédant le curseur
<ctrl v> toucheSpéciale Échappement permettant d'afficher littéralement
  une touche ou une combinaison spéciale
<ctrl v> <Return> Affiche un Return littéral, souvent ^M ou ^J

3.3.8 Insertion

« *Vim* » reprend en partie la philosophie de « *Ed* » et certaines de ses commandes, en particulier les commandes d'ajout et d'insertion :

:a Ajoute du texte après la ligne courante, la fin de l'ajout
  est signalée par un ligne contenant uniquement un point
:i Insère du texte avant la ligne courante, la fin de l'insertion
  est signalée par un ligne contenant uniquement un point
:c Change une ou plusieurs lignes, la fin de la modification
  est signalée par un ligne contenant uniquement un point
:d Supprime une ou plusieurs lignes

3.4 Mode insertion

Le mode insertion permet d'insérer le texte frappé au clavier dans un fichier. Par conséquent, seules les touches du clavier ne correspondant pas aux caractères imprimables (lettres, chiffres, espaces, etc) peuvent faire partie d'une commande du mode insertion.

3.4.1 Intéractions avec le mode normal

<ctrl o> commande Permet d'exécuter une commande du mode normal
  lorsqu'on est en mode insertion ou sélection
<ctrl v> toucheSpéciale Échappement permettant d'afficher littéralement
  une touche ou une combinaison spéciale

3.5 Mode remplacement

Le mode remplacement est une variante du mode insertion. On peut d'ailleurs basculer de l'un à l'autre via la touche :

<ins>

3.5.1 Intéractions avec le mode normal

R Passe du mode normal au mode remplacement
r Passe en mode remplacement pour un seul caractère

3.6 Mode visuel

Le mode visuel permet de sélectionner du texte afin d'y appliquer une opération quelconque. Les mouvements effectués en mode visuel modifient la sélection en conséquence.

3.6.1 Intéractions avec le mode normal

v Bascule entre le mode normal et le mode visuel
gv Passe du mode normal à la dernière sélection
V Passe du mode normal au mode visuel ligne
<ctrl v> Passe du mode normal au mode visuel rectangulaire

3.6.2 Commandes

o Les mouvements suivants modifient le début / la fin de la sélection
<esc> Passe du mode visuel au mode normal

3.7 Mode sélection

Le mode sélection ressemble au mode visuel, mais il effectue un remplacement de la sélection par le texte saisi ensuite. Il n'accepte donc pas les commandes en mode normal.

gh Passe du mode normal au mode sélection
gH Comme gh, mais permet de sélectionner ligne par ligne
g <ctrl h> Comme gh, mais permet de sélectionner un rectangle
<ctrl g> Passe du mode visuel au mode sélection et vice versa

3.8 Édition

3.8.1 Démarrage

vim fichier(s) Édite un ou plusieurs fichiers ou répertoires à la suite
vim fichierArchive Édite le contenu d'une archive
commande ¦ vim - Envoie la sortie d'une commande à vim

3.8.2 Ouverture

:e fichier Édite un fichier ou un répertoire
:e! fichier Édite un autre fichier sans sauver les modifications du fichier courant
:e % Réédite le fichier courant
:e # Édite l’avant-dernier fichier édité
3.8.2.1 Chemins d'accès
:set path+=/chemin/ Ajoute un chemin d'accès aux fichiers dans la variable path
:set path-=/chemin/ Supprime un chemin de la variable path
:find fichier Trouve un fichier dans les chemins de la variable path et l'édite

3.8.3 Informations

<ctrl g> Informations sur un fichier

3.8.4 Lecture

:r fichier Lis un fichier et l'insère dans le fichier courant

3.8.5 Écriture

:w Sauve le fichier courant
:w fichier Enregistre une copie du fichier courant sous le nom fichier
:up Sauve le fichier courant si il y a des modifications
:sav fichier Sauve le fichier courant sous le nom fichier
3.8.5.1 Encodage
:w ++enc=/encodage/ fichier Enregistre une copie du fichier courant avec un encodage différent

3.8.6 Lecture seule

view Lance vim en mode lecture seule
vim -R  
gview Lance gvim en mode lecture seule
:set readonly! Interrupteur de l'option lecture seule
3.8.6.1 Modifiable

Un fichier ouvert avec l'option lecture-seule ne peut plus être écrit sur le disque, mais peut toujours être modifié à l'intérieur de vim, car ce dernier en tient une copie (un tampon) pour l'édition. Si vous désirez que le tampon ne soit pas modifiable, il faut activer l'option :

:set nomodifiable

L'interrupteur de l'option s'écrit :

:set modifiable!

3.8.7 Quitter

:q Quitte
:wq Sauve et quitte
:x Sauve si le fichier a été modifié et quitte
:q! Quitte sans sauver

3.9 Répétitions

. Répète la dernière action
@: Répète la dernière ligne de commande

3.9.1 Mode normal

3.9.1.1 Préfixes numériques
N commande Exécute une commande un nombre N de fois
N mouvement Répète N fois un mouvement
N . Répète N fois la dernière action
N @: Répète N fois la dernière ligne de commande
   

3.9.2 Mode insertion

<ctrl a> Reproduit l'insertion précédente

3.10 Défaire et refaire

:undo Annule la dernière action
u  
:redo Annule la dernière annulation
<ctrl r>  
U Annule la dernière modification de la ligne courante
:undolist Donne la liste des annulations
g- État temporel précédent du fichier
:earlier  
g+ État temporel suivant du fichier
:later  
:earlier durée Recule en arrière dans le temps
  d'une durée donnée (10s, 7m, 3h, …)
:later durée Avance en avant dans le temps d'une durée donnée

3.11 Mouvements

h va au caractère précédent
j va à la ligne suivante
k va à la ligne précédente
l va au caractère suivant
w Va au mot suivant, au sens strict
b Va au mot précédent, au sens strict
e Va à la fin du mot, au sens strict
W Va au mot suivant, au sens large
B Va au mot précédent, au sens large
E Va à la fin du mot, au sens large
) Va à la phrase suivante
( Va à la phrase précédente
} Va au paragraphe suivant
{ Va au paragraphe suivant
[[ Va à la section précédente
]] Va à la section suivante

3.11.1 Lignes

0 Va au début de la ligne
$ Va à la fin de la ligne
+ Va au début de la ligne suivante
- Va au début de la ligne précédente
N G Va à la ligne N
:/N/  
N ¦ Va à la colonne N
N + Descend de N lignes
N - Monte de N lignes
gg Va à la première ligne
:0  
:1  
G Va à la dernière ligne
:$  

3.11.2 Lignes virtuelles

Les lignes assez longues pour dépasser la largeur de la fenêtre sont affichées sous la forme de plusieurs lignes virtuelles visibles écran si l'option :

set wrap

est activée. Les mouvement habituel considérent des lignes réelles, mais il existe aussi des commandes permettant de se déplacer dans les lignes virtuelles.

g0 Va au début de la ligne virtuelle
g$ Va à la fin de la ligne virtuelle
gj Va à la ligne virtuelle suivante
gk Va à la ligne virtuelle précédente

3.11.3 Écran

H Positionne le curseur en haut de l'écran
M Positionne le curseur au milieu de l'écran
L Positionne le curseur en bas de l'écran

3.11.4 Défilement

<ctrl e> Descend la fenêtre d'une ligne
<ctrl y> Monte la fenêtre d'une ligne
<ctrl d> Va au demi-écran suivant
<ctrl u> Va au demi-écran précédent
<ctrl f> Va à l'écran suivant
<ctrl b> Va à l'écran précédent
z+ Place la ligne courante en haut
zt  
z. Place la ligne courante au milieu
zz  
z- Place la ligne courante en bas
zb  

3.11.5 Signets

On peut définir :

  • 26 signets locaux par fichier, chacun correspondant à une lettre minuscule (a…z)
  • 26 signets globaux, chacun correspondant à une lettre majuscule (A…Z)
m/A/</td> Définit le signet A à l'emplacement courant
:ma A  
:k A  
`/A/ Va au signet A
'A Va à la ligne de signet A
]` Va au signet suivant
[` Va au signet précédent
:marks Donne la liste des signets

3.11.6 Contextes

:ju Affiche la liste des contextes
:jumps  
<ctrl o> Va au contexte précédent (dans le même fichier ou un autre)
<ctrl i> Va au contexte suivant (dans le même fichier ou un autre)
` ` (2 x `) Alterne les deux derniers contextes
' ' (2 x ') Alterne les lignes des deux derniers contextes
` ^ Va à la position où le curseur était à la fin de la dernière insertion
' ^ Va à la ligne où le curseur était à la fin de la dernière insertion
` " Va à la position où le curseur était lors de la dernière fermeture du fichier
' " Va à la ligne où le curseur était lors de la dernière fermeture du fichier

3.11.7 Modifications

:changes Affiche la liste des modifications
g; Va à la modification précédente
g, Va à la modification suivante
'. Va à la dernière ligne éditée
gi Insère à nouveau du texte à l'endroit de la dernière insertion
`[ Va au début du dernier changement
`] Va à la fin du dernier changement
'[ Va à la première ligne du dernier changement
'] Va à la dernière ligne du dernier changement

3.12 Expressions régulières

3.12.1 Caractères

caractère Correspond à un caractère ordinaire
\/caractère/ Correspond à un caractère ayant autrement une signification particulière
\. Point « . »
\[ Crochet « [ »
\] Crochet « ] »

3.12.2 Caractères blancs

<espace> Espace
\t Tabulation
\s Espace ou tabulation
\n Caractère de fin de ligne

3.12.3 Caractères invisibles

\e <esc>
\b <Backspace>
\r <Return>

3.12.4 Coordonnées

\%/N/l Ligne N
\%/N/c Colonne N
\%'signet Signet
\%# Position du curseur

3.12.5 Délimiteurs

^ Début de ligne
\_^  
$ Fin de ligne
\_$  
\< Début de mot
\> Fin de mot
\%^ Début de fichier
\%$ Fin de fichier
\%<'signet Avant un signet
\%>'signet Après un signet

3.12.6 Plages

\%V Dans la dernière sélection visuelle

3.12.7 Jokers

. N'importe quel caractère sauf fin de ligne
\_. N'importe quel caractère, fin de ligne inclue
\s Espace ou tabulation
\a Lettre
\d Chiffre
\l Lettre minuscule
\u Lettre majuscule
3.12.7.1 Négations
§ Non \s
\A Non \a
\D Non \d
\L Non \l
\U Non \u

3.12.8 Groupes

[/caractères/] Un des caractères du groupe
[/A/-/Z/] Caractères entre A et Z
[^/caractères/] Tout sauf un des caractères du groupe ou une fin de ligne
\_[/caractères/] Un des caractères du groupe ou fin de ligne
\_[/caractères/] (Tout sauf un des caractères du groupe) ou fin de ligne
\%[/chaîne/] Rien ou une partie quelconque au début de la chaîne
3.12.8.1 Exemples
[0-9] Chiffres
[A-Z] Majuscules
[a-z] Minuscules

3.12.9 Logique

\( /.../ \) Groupement logique et pour les rétro-références
\%( \) Groupement logique ne comptant pas pour les rétro-références
motif1motif2 Tout ce qui correspond à motif1 ou à motif2
motif1 \& motif2 Tout ce qui correspond à motif1 et à motif2

3.12.10 Quantité

\(/motif/\)\{N} N correspondances au motif
\(/motif/\)\{M,/N/} Entre M et N correspondances au motif
\(/motif/\)\{,/N/} Au plus N correspondances au motif
\(/motif/\)\{N,} Au minimum N correspondances au motif
\(/motif/\)\{} N'importe quel nombre de correspondances
3.12.10.1 Cas particuliers
* \{}
\= \{0,1}
\?  
\+ \{1,}
3.12.10.2 Minimum

<tr> <td>\{-}</td> <td>Comme \{} mais correspond au minimum de correspondances possible dans la plage</td> </tr>

\{-} Correspond au minimum de correspondances possible

3.12.11 Contexte

Les clefs suivantes indiquent le début et la fin du motif :

\zs Début de motif
\ze Fin de motif

Tout ce qui intervient en dehors de ces limites constitue le contexte. Exemple :

/contexteAvant/\zs/motif/\ze/contexteArrière/

3.12.12 Vérifications

motif\(/test/\)\@= Correspond à motif si test suit
motif\(/test/\)\@! Correspond à motif si test ne suit pas
\(/test/\)\@<=/motif/ Correspond à motif si test le précède directement
\(/test/\)\@<!/motif/ Correspond à motif si test ne le pas précède directement

3.12.13 Contrôle

\C Active la sensibilité à la casse
\c Désactive la sensibilité à la casse

3.12.14 Fichiers

* N'importe quelle chaîne de caractères dans un nom de fichier ou de répertoire
** N'importe quel sous-répertoire
**/N/ N'importe quel sous-répertoire jusqu'au niveau N

3.13 Recherches

/expression recherche (de haut en bas) de l’expression expression
?/expression/ rétro-recherche (de bas en haut) de l’expression expression
n Va à l'occurrence suivante
N Va à l'occurrence précédente

3.13.1 Décalage

//expression//b recherche l'expression puis place le curseur
//expression//s au début de la correspondance
//expression//e recherche l'expression puis place le curseur
  à la fin la correspondance
/expression//b+/N recherche l'expression puis place le curseur
/expression//s+/N N caractères après le début de la correspondance
/expression//e+/N recherche l'expression puis place le curseur
  N caractères après la fin la correspondance
/expression//b-/N recherche l'expression puis place le curseur
/expression//s-/N N caractères avant le début de la correspondance
/expression//e-/N recherche l'expression puis place le curseur
  N caractères avant la fin la correspondance
/expression//+/N recherche l'expression puis décale de N lignes vers le bas
expression-N recherche l'expression puis décale de N lignes vers le haut

Le princip est le même avec les rétro-recherches, le « / » est simplement remplacé par un « ? ». Exemples :

?/expression/?+/N/ rétro-recherche l'expression puis décale de N lignes vers le bas
?/expression/?-N rétro-recherche l'expression puis décale de N lignes vers le haut

3.13.2 Chaînage de recherches

expr1;//expr2/ Effectue une recherche puis une autre
?/expr1/?;?/expr2/ Effectue une rétro-recherche puis une autre
expr1;?/expr2/ Recherche puis rétro-recherche
?/expr1/?;//expr2/ Rétro-recherche puis recherche

3.13.3 Contextuel

* Va à la occurrence suivante du mot courant
# Va à l'occurrence précédente du mot courant
g* Va à la occurrence suivante de la chaîne de caractères du mot courant
g# Va à l'occurrence précédente de la chaîne de caractères du mot courant
% Va à la parenthèse, le crochet ou l'accolade correspondante
[I Affiche toutes les lignes contenant le mot courant
   

3.13.4 Lettres

f lettre Va à la prochaine occurrence
  de la lettre lettre dans la ligne courante
F lettre Va à l'occurrence précédente
  de la lettre lettre dans la ligne courante
t lettre Se positionne juste avant l'occurrence suivante
  de la lettre lettre dans la ligne courante
T lettre Se positionne juste après l'occurrence précédente
  de la lettre lettre dans la ligne courante

3.13.5 Répétition

? Répète la recherche précédente de bas en haut
//décalage Répète la recherche précédente avec un autre décalage
??/décalage/ Comme //décalage mais de bas en haut
; Répète une recherche effectuée par f ou F

3.13.6 Mise en évidence

On peut associer un motif à une couleur via un groupe. On commence par définir le groupe :

match /Groupe/ //motif//

Ensuite, on définit les couleurs d'avant-plan (ctermfg) et d'arrière-plan (ctermbg) :

highlight Groupe ctermfg=/couleur/ guifg=/couleur/ highlight Groupe ctermbg=/couleur/ guibg=/couleur/

3.13.7 Annuler la mise en évidence

:nohl Annule la mise en évidence du dernier motif recherché

3.14 Plages et adresses

Un certain nombre de commandes ex peuvent s'exécuter sélectivement sur une plage donnée de texte. La forme générale est :

: /plage/ /commande/

3.14.1 Par défaut

Par défaut, la plage est souvent la ligne courante.

3.14.2 Adresses

Une plage peut se définir par une adresse de début et une adresse de fin. La forme générale est :

: /adresseDébut/ , /adresseFin/ /commande/

ou :

: /adresseDébut/ ; /adresseFin/ /commande/

La forme en « ; » provoque le déplacement du curseur à chaque nouvelle adresse, tandis que la forme « , » laisse le curseur constant. Nous verrons la raison de cette nuance plus loin.

3.14.2.1 Numéros de lignes

Une adresse peut être définie par un numéro de ligne :

N Ligne N
. Ligne courante
.+/N/ Ligne courante + N
.-N Ligne courante - N
$ Dernière ligne
3.14.2.1.1 Exemples

<tr> <td>: M , N w fichier/</td> <td>Sauve les lignes /M à N du fichier courant sous le nom /fichier/</td> </tr>

3.14.2.2 Motifs

Une adresse peut être définie par un motif :

motif La première ligne vers le bas contenant le motif
?/motif/? La première ligne vers le haut contenant le motif
\/ La première ligne vers le bas contenant le dernier motif
\? La première ligne vers le haut contenant le dernier motif

Par exemple la plage :

/N/ , //motif//

va de la ligne N à la première occurence du motif suivant le curseur, tandis que :

/N/ ; //motif//

va de la ligne N à la première occurence du motif suivant la ligne N

3.14.2.3 Signets

Une adresse peut être définie par un signet :

'signet Ligne d'un signet
3.14.2.3.1 Exemples

<tr> <td>: 'M , 'N w /fichier/</td> <td>Sauve les lignes entre les signets M et N sous le nom /fichier/</td> </tr>

3.14.3 Retour aux plages

Voici quelques plages possibles :

. Ligne courante, équivalent à .,.
N Ligne N, équivalent à N,/N/
'A Ligne d'un signet, équivalent à 'A,'A
% Désigne tout le fichier Équivalent à 1,$
;/N/ Équivalent à .,/N/
;/$/ Équivalent à .,/$/

3.14.4 Nombre

Lorsqu'un nombre est entré avant une ligne de commande :

/N/ :

la plage part de la ligne courante et compte N lignes au total :

:.,.+/(N - 1)/

On peut alors entrer la commande :

:.,.+/(N - 1)/ /commande/

3.15 Objets textuels

3.15.1 Forme intérieure

Les objets textuels permettent d'appliquer une commande du mode normal sur un mot, une phrase, un contenu entre (), [], {}, etc. La forme générale est :

/commande/i/objet/
iw Commande sur un mot au sens strict
iW Commande sur un mot au sens large
is Commande sur une phrase
ip Commande sur paragraphe
i' Commande sur le texte entre guillemets simples
i" Commande sur le texte entre guillemets doubles
i( Commande sur le texte entre parenthèses
i[ Commande sur le texte entre crochets
i{ Commande sur le texte entre accolades
i< Commande sur le texte entre < >
it Commande sur le texte entre balises (tags en anglais) html/xml

3.15.2 Forme adjacente

La forme adjacente est similaire, mais permet de sélectionner également les caractères à la frontière. La forme générale est :

/commande/a/objet/

Exemples :

a( Comme i(, mais sélectionne également les ( )
a[ Comme i[, mais sélectionne également les [ ]
at Comme it, mais sélectionne également les balises

3.16 Copier, coller

y Copie
:y  
d Coupe (copie et efface)
c Change (coupe et passe en insertion)
s Substitue (coupe le caractère sous le curseur et passe en insertion)
p Colle après le curseur
P Colle avant le curseur
gp Colle après le curseur et se déplace après le texte collé
gP Colle avant le curseur et se déplace après le texte collé

3.16.1 Caractères

x Coupe le caractère courant
X Coupe le caractère précédent
s Substitue le caractère courant

3.16.2 Lignes de commande

:/plage/ move adresse Déplace la plage juste après la ligne donnée par l'adresse
:/plage/ copy adresse Copie la plage juste après la ligne donnée par l'adresse
:/plage/ move 0 Déplace la plage au début du fichier
:/plage/ copy 0 Copie la plage au début du fichier
:/plage/ move $ Déplace la plage à la fin du fichier
:/plage/ copy $ Copie la plage à la fin du fichier
:t Équivalent à :copy

3.16.3 Mode visuel

y Copie la sélection
d Coupe la sélection
c Change la sélection
s Substitue la sélection

3.16.4 Mouvements

Les opérateurs de copie acceptent les mouvements en argument :

y mouvement Copie la plage de texte allant du curseur
  jusqu'au point obtenu après le mouvement
d mouvement Coupe la plage de texte allant du curseur
  jusqu'au point obtenu après le mouvement
c mouvement Change la plage de texte allant du curseur
  jusqu'au point obtenu après le mouvement,
  puis passe en mode insertion

Exemples :

y$ Copie jusqu'à la fin de la ligne
d) Coupe jusqu'à la fin de la phrase
c4w Modifie 4 mots

3.16.5 Signets

Les opérateurs de copie acceptent les signets en argument :

y 'signet Copie la plage de texte allant du curseur jusqu'au signet
d 'signet Coupe la plage de texte allant du curseur jusqu'au signet
c 'signet Change la plage de texte allant du curseur jusqu'au signet, puis passe en mode insertion

3.16.6 Objets textuels

Les opérateurs de copie acceptent les objets textuels en argument. Exemple :

yis Copie la phrase courante
yat Copie entre deux balises html, balises incluses
di( Coupe le contenu entre parenthèses
cip Modifie le paragraphe

3.16.7 Lignes

yy Copie la ligne courante
dd Coupe la ligne courante
cc Coupe la ligne courante et passe en mode insertion
S  
D Coupe jusqu'à la fin de la ligne
C Coupe jusqu'à la fin de la ligne et passe en mode insertion
3.16.7.1 Nombres
N yy Copie N lignes à partir de la ligne courante
N dd Coupe N lignes à partir de la ligne courante

3.16.8 Mode insertion

<ctrl w> Efface le mot précédant le curseur
<ctrl u> Efface la ligne jusqu'au curseur

3.17 Registres

Les registres permettent de stocker 26 plages de texte, chacun correspondant à une des lettres de l'alphabet. Les lettres minuscules remplacent le contenu d'un registre par la plage de texte, les lettres majuscules ajoutent la plage de texte au contenu du registre.

a … z Registres
A … Z Accès aux registres en ajout

3.17.1 Liste

Pour afficher la liste des registres et leurs contenus, on dispose de la commande :

:registers

ou, sous forme abrégée :

:reg

3.17.2 Couper / Copier / Coller

"registre y mouvement Copie du curseur jusqu'au point obtenu après le mouvement dans le registre registre
"registre d mouvement Coupe du curseur jusqu'au point obtenu après le mouvement dans le registre registre
"registre p Colle le registre registre après le curseur
"registre P Colle le registre registre avant le curseur

3.17.3 Spéciaux

" Registre par défaut
0 1 … 9 Contiennent les derniers copiés / collés
- Dernière petite suppression
. Dernier texte inséré
: Dernière commande exécutée
% Nom du fichier courant
# Nom du fichier alternatif, c'est-à-dire le fichier édité juste avant le fichier courant
= Registre de capture du résultat d'une expression vim (variable, fonction, …)

3.17.4 Presse-papier

* Texte sélectionné
+ Presse-papier

Exemples :

"+y Copie dans le presse-papier
"*p Colle le contenu de la dernière sélection

3.17.5 Mode visuel

v mouvement(s) "registre y Passe en mode visuel, sélectionne au fil des mouvements et copie dans le registre registre
v mouvement(s) "registre d Passe en mode visuel, sélectionne au fil des mouvements et coupe dans le registre registre

3.17.6 Mode insertion

<ctrl r> registre Colle un registre

3.17.7 Mode ligne de commande

:@ registre Exécute le contenu d'un registre
:@@ Exécute le contenu du dernier registre utilisé
<ctrl r> registre Colle un registre

3.17.8 Enregistrements

Les registres servent également à enregistrer des macros.

q/registre/ Débute l'enregistrement dans le registre registre
q Termine l'enregistrement
@/registre/ Exécute le contenu du registre registre
@@ Exécute la dernière macro utilisée

3.17.9 Exécuter une plage de texte

On peut aussi copier une plage de texte dans un registre pour l'exécuter ensuite. La commande suivante exécute la ligne courante :

"/registre/ yy @/registre/

3.18 Mode visuel avancé

3.18.1 Modifications d'une sélection

<ctrl v> c Permet de sélectionner un rectangle et de remplacer l'ancien texte par un nouveau.
  <esc> termine la commande.
<ctrl v> I Permet de sélectionner un rectangle et de passer
  en mode insertion pour ajouter un même texte
  avant la sélection sur toutes les lignes sélectionnées.
  <esc> termine la commande.
<ctrl v> A Permet de sélectionner un rectangle
  et de passer en mode insertion pour
  ajouter un même texte après la sélection
  sur toutes les lignes sélectionnées
<ctrl v> r Permet de sélectionner un rectangle et de remplacer toute une colonne de caractères

3.18.2 Objets textuels

Les objets textuels peuvent être utilisés pour sélectionner un mot, une phrase, un paragraphe, un contenu entre (), [], {}, etc. Exemples :

vi{ Passe en mode visuel et sélectionne le contenu entre accolades
va{ Passe en mode visuel et sélectionne le contenu entre accolades, accolades incluses

3.18.3 Adresses

`< Va au début de la dernière sélection
`> Va à la fin de la dernière sélection
'< Va à la première ligne de la dernière sélection
'> Va à la dernière ligne de la dernière sélection
: '<,'> commande Applique une commande aux lignes de la sélection courante
  ou de la dernière sélection
: Permet d'appliquer une commande sur la sélection
  en introduisant automatiquement la plage '<,'>

3.19 Substitutions

Par défaut, l'opérateur de substitution opère sur la ligne courante :

:s//avant///après// Remplace une seule occurrence de avant par après
:s//avant///après//g Remplace toutes les occurrences de avant par après
:s//avant///après//gc Remplace toutes les occurrences de avant par après
  en demandant confirmation à chaque occurrence

3.19.1 Adresses

On peut indiquer à l'opérateur de substitution une plage où opérer :

:%s//avant///après//g Remplace avant par après dans tout le fichier
:'<,'>s//avant///après//g Remplace avant par après dans toute la dernière sélection visuelle
:/M/,/N/s//avant///après//g Remplace avant par après entre les lignes M et N

Le dernier motif de substitution définit l'adresse :

\& La ligne juste après le dernier motif de substitution

3.19.2 Rétro-références

& Représente le motif à remplacer
\/N/ Représente le N/<sup>ème</sup> sous-motif \(/motifN\)

Exemples :

:s//motif//(&)/ Place un motif entre parenthèses
:s/\(/motif1/\)\(/motif2/\)/\2\1/ Intervertit deux motifs
\(/Abc\)\(/Def/\)\1 Recherche Abc puis Def puis la répétition de la correspondance à Abc

3.19.3 Répétitions

:s///après// Répète la dernière substitution mais en remplaçant le même motif par une autre chaîne
:s//avant//~/ Répète la dernière substitution mais en remplaçant un autre motif par la même chaîne
:s//avant///après//& Substitution avec les mêmes options que la substitution précédente
:& Répète la dernière substitution
:&& Répète la dernière substitution avec les mêmes options
:%& Répète la dernière substitution dans tout le fichier
:%&& Répète la dernière substitution dans tout le fichier avec les mêmes options
:~ Répète la dernière substition mais en remplaçant le dernier motif recherché par la même chaîne
& Répète la dernière substitution
g& Répète la dernière substitution dans tout le fichier avec les mêmes options

3.20 Tri

La commande sort trie une plage ligne par ligne :

:/plage/ sort

Exemples :

: % sort Trie tout le fichier
: % sort! Trie tout le fichier en ordre inversé

3.21 Complétion

3.21.1 Mode ligne de commande

La touche de tabulation a différents effets suivant le contexte :

  • Complétion non ambiguë si possible
  • Liste de solutions possibles si il y en a plusieurs
  • Choix suivant dans la liste si celle-ci est affichée

Pour revenir en arrière dans la liste, il suffit de presser shift et tab simultanément.

<tab> Complète le nom d'une commande ou d'un fichier
<tab> Solutions suivante si il y en a plusieurs
<shift tab> Solutions précédente si il y en a plusieurs
<ctrl d> Donne la liste des complétions possibles
<ctrl a> Insère toutes les complétions possibles
<ctrl r> <ctrl w> Insère le mot au sens strict sous le curseur
<ctrl r> <ctrl a> Insère le mot au sens large sous le curseur
<ctrl r> <ctrl f> Insère le nom de fichier sous le curseur
<ctrl r> <ctrl p> Insère le nom de fichier avec chemin sous le curseur
3.21.1.1 Menu

Voici les options de complétion avec menu à placer dans le fichier vimrc :

set wildmenu set wildmode=list:full

On peut naviguer dans ce menu au moyen des flèches.

3.21.2 Mode insertion

<ctrl y> Insère le caractère disposé sur la même colonne dans la ligne située juste au-dessus
<ctrl e> Insère le caractère disposé sur la même colonne dans la ligne située juste en-dessous
<ctrl n> Propose le choix suivant pour compléter le mot courant
<ctrl p> Propose le choix précédent pour compléter le mot courant
<ctrl x> Entre dans le sous-mode ctrl-X
3.21.2.1 Commandes valables dans le sous-mode ctrl-X</td>
<ctrl n> Propose le choix suivant de complétion à partir du fichier courant
<ctrl p> Propose le choix précédent de complétion à partir du fichier courant
<ctrl i> Propose le choix suivant de complétion à partir du fichier courant et des fichiers inclus
<ctrl k> Propose le choix suivant de complétion à partir du dictionnaire
<ctrl t> Propose le choix suivant de complétion à partir du dictionnaire des synonymes
<ctrl v> Propose le choix suivant de complétion à partir des commandes vim
s Propose la suggestion orthographique suivante
<ctrl l> Propose le choix suivant pour compléter la ligne courante
<ctrl f> Complétion des noms de fichier

3.21.3 Omni

L'omni-complétion se sert du langage et du contexte pour déterminer les mots-clés. On l'active avec l'option omnifunc. Exemple :

omnifunc=htmlcomplete#CompleteTags

Ensuite, on utilise l'omni-complétion dans le sous-mode ctrl-X du mode insertion avec :

<ctrl o>

3.22 Historique des commandes

Depuis le mode normal :

:his : Affiche l'historique des commandes
:his / Affiche l'historique des recherches
q: Donne accès à l'historique des commandes
q/ Donne accès à l'historique des recherches

Depuis le mode ligne de commande (:…) :

<ctrl f> Accède à l'historique des commandes

Depuis le mode ligne de commande version recherche (/… ou ?…) :

<ctrl f> Accède à l'historique des recherches

La fenêtre d'historique peut se manipuler comme n'importe quel fichier :

/motif Effectue une recherche avant dans l'historique
?/motif/ Effectue une recherche arrière dans l'historique
<Return> Sélectionne une commande ou recherche et l'exécute
:q Quitte l'historique
i Passe en mode insertion pour pouvoir compléter la commande ou la recherche

3.22.1 Mode ligne de commande

Après avoir inséré le préfixe de la ligne de commande « : » en mode normal, on a accès à l'historique avec les flèches :

<up> Ligne de commande précédente dans l'historique
<down> Ligne de commande suivante dans l'historique

Après avoir inséré le préfixe de la ligne de commande « : » et le début d'une ligne de commande, les flèches haut et bas donnent accès à l'historique des commandes correspondant à la partie déjà frappée.

<up> Ligne de commande précédente dans l'historique correspondant au début déjà frappé
<down> Ligne de commande suivante dans l'historique correspondant au début déjà frappé

3.22.2 Recherches

Après avoir inséré un préfixe de recherche (/ ou ?) en mode normal, on a accès à l'historique des motifs de recherche avec les flèches :

<up> Motif de recherche précédent dans l'historique
<down> Motif de recherche suivant dans l'historique
   

Après avoir inséré le préfixe de recherche (/ ou ?) et le début d'un motif de recherche, les flèches donnent accès à l'historique des motifs qui correspondent à la partie déjà frappée.

<up> Motif de recherche précédent dans l'historique correspondant au début déjà frappé
<down> Motif de recherche suivant dans l'historique correspondant au début déjà frappé

3.23 Indentation

> Indente la sélection
< Désindente la sélection
> mouvement Indente jusqu'au mouvement
< mouvement Désindente jusqu'au mouvement
>> Indente une ligne
<< Désindente une ligne
N >> Indente N lignes
N << Désindente N lignes
= Arrange l'indentation de la sélection

3.23.1 Mode insertion

<ctrl t> Indente la ligne
<ctrl d> Désindente la ligne

3.24 Pliage

3.24.1 Définition

On peut définir des blocs de textes au sein d'un fichier. Un nombre quelconque de blocs pouvant être imbriqué dans un autre, on donne ainsi une allure arborescente au texte. Chaque bloc peut être plié ou déplié à volonté.

3.24.1.1 Indentation

La définition des blocs se fait automatiquement par indentation avec l'option :

:set foldmethod=indent
3.24.1.2 Marques

Les blocs peuvent aussi être définis par des marques.

:set foldmethod=marker Définition des blocs d'après les marques
{{{ commentaire Marque par défaut initiale d'un bloc
}}} Marque par défaut finale d'un bloc
:set foldmarker=/initial/,/final/ Modifie les marques
3.24.1.3 Manuelle

Les blocs peuvent aussi être définis manuellement :

:set foldmethod=manual Autorise la définition manuelle de bloc
zf mouvement Définit manuellement un bloc
zf Définit manuellement un bloc sur la sélection courante
zd Supprime un niveau du bloc courant
zD Supprime récursivement tous les sous-blocs du bloc courant
zD Supprime récursivement tous les blocs

3.24.2 Affichage

L'affichage de N niveaux de l'arborescence à gauche du texte se fait au moyen de l'option :

:set foldcolumn=/N/

3.24.3 Pliage / Dépliage

3.24.3.1 Local
za Plie / Déplie le contenu du bloc courant
zA Plie / Déplie récursivement le contenu du bloc courant
zo Déplie le contenu du bloc courant
zc Plie le contenu du bloc courant
zv Déplie assez de niveaux pour afficher le curseur
3.24.3.2 Global
zr Déplie un niveau supplémentaire
zm Plie un niveau supplémentaire
zR Déplie récursivement le contenu de tous les blocs
zM Plie récursivement le contenu de tous les blocs

3.24.4 Déplacements

[z Va au début du bloc courant
]z Va à la fin du bloc courant
zj Va au bloc suivant
zk Va au bloc précédent

3.24.5 Opérations

Les opérations de sélection en mode visuel, de copie, de déplacement et autres peuvent se faire aisément sur des blocs pliés. Par exemple, si on se place sur la ligne d'un bloc plié et qu'on fait :

dd

cela coupe tout le bloc. On peut le déplacer en se rendant à la destination voulue et en le collant avec p ou P. On peut aussi passer en mode visuel et copier, couper ou faire une substitution sur plusieurs blocs.

3.24.6 Filtre

:folddoopen commande Applique une commande aux lignes qui ne font pas partie d'un bloc plié
:folddoclose commande Applique une commande aux lignes qui ne font pas partie d'un bloc déplié

3.25 Multi-fichiers

3.25.1 Arguments

Les arguments sont les fichiers passés en ligne de commande à vim. La liste des arguments peut être modifié dans vim lui-même.

vim liste Lance vim avec une liste de fichiers à éditer
:ar Montre la liste des fichiers à éditer
:args  
:ar liste Définit liste comme la nouvelle liste de fichiers à éditer
:arga fichier Ajoute fichier à la liste à éditer
:arge fichier Ajoute si nécessaire fichier à la liste à éditer et l'édite
:argd motif Supprime les fichiers correspondant au motif dans la liste
:n Passe au fichier suivant de la liste à éditer
:N Passe au fichier précédent de la liste à éditer
:wn Sauve et passe au fichier suivant de la liste à éditer
:e #/N/ Édite le /N/<sup>ième</sup> fichier de la liste des arguments

3.25.2 Éclatements

L'éclatement (ou split en anglais) consiste à scinder une fenêtre en plusieurs sous-fenêtres, ce qui permet de visualiser plusieurs fichiers simultanément. On peut aussi utiliser les splits pour disposer de plusieurs vues sur un même fichier.

3.25.2.1 Au lancement

On peut lancer vim avec des options pour éditer les fichiers en arguments dans des splits séparées :

vim -o fichiers Ouvre des fichiers dans des splits horizontaux
vim -O fichiers Ouvre des fichiers dans des splits verticaux
3.25.2.2 Manipulation
:sp fichier Ouvre un fichier dans un nouvel éclatement horizontal
:split …..  
:vs fichier Ouvre un fichier dans un nouvel éclatement vertical
:vsplit …..  
<ctrl w> s Éclate horizontalement la fenêtre
<ctrl w> v Éclate verticalement la fenêtre
:only Garde seulement le split courant
<ctrl w> o  
:close Ferme le split courant
<ctrl w> c  
:q Quitte le split courant
<ctrl w> q  
3.25.2.3 Mouvements entre les splits
<ctrl w> w Se ballade entre les splits
<ctrl w> <left> Aller au split situé à gauche
<ctrl w> h  
<ctrl w> <down> Aller au split inférieur
<ctrl w> j  
<ctrl w> <up> Aller au split supérieur
<ctrl w> k  
<ctrl w> <right> Aller au split situé à droite
<ctrl w> l  
3.25.2.4 Déplacements des splits
<ctrl w> H Déplacer le split tout à gauche
<ctrl w> J Déplacer le split tout en bas
<ctrl w> K Déplacer le split tout en haut
<ctrl w> L Déplacer le split tout à droite
3.25.2.5 Tailles
<ctrl w> = Donne une taille égale à toutes les fenêtres
<ctrl w> I > Augmenter la taille de la fenêtre d'un éclatement vertical
<ctrl w> I < Diminuer la taille de la fenêtre d'un éclatement vertical
<ctrl w> I + Augmenter la taille de la fenêtre d'un éclatement horizontal
<ctrl w> I - Diminuer la taille de la fenêtre d'un éclatement horizontal
3.25.2.6 Forcer

Forcer un nouveau split vertical :

:vert commande Si la commande ouvre un nouveau split horizontal, ouvre un nouveau split vertical à la place

3.25.3 Onglets

On peut lancer vim avec des options pour éditer les fichiers en arguments dans des onglets séparés :

3.25.3.1 Au lancement

On peut demander à vim d'ouvrir dès son démarrage les fichiers en argument dans des onglets :

vim -p /fichiers/
3.25.3.2 Gestion
:tabs Affiche la liste des onglets et des fenêtres qu'ils contiennent
:tabnew Ouvre un nouvel onglet
:tabe fichier Ouvre fichier dans un nouvel onglet
:tabc Ferme l'onglet courant
:q  
:tabo Garde uniquement l'onglet courant
:tabm Déplace l'onglet courant
3.25.3.3 Mouvements entre les onglets
:tabn Passe à l'onglet suivant
gt  
:tabp Passe à l'onglet précédent
gT  
3.25.3.4 Splits et onglets
<ctrl w> T Déplace le split dans un nouvel onglet
3.25.3.5 Forcer

Forcer un nouvel onglet :

:tab commande Si la commande ouvre une nouveau split horizontal, ouvre un nouvel onglet à la place

3.25.4 Tampons

Vim conserve en mémoire une copie de chaque fichier ouvert depuis son lancement. Une telle copie s'appelle un tampon (ou buffer en anglais). Les tampons ne sont supprimés que sur demande explicite, ou si on quitte vim.

:ls Donne la liste des fichiers ouverts (tampons)
:buffers  
:b tampon Ouvre un tampon
:bn Va au tampon suivant
:bnext  
:bp Va au tampon précédent
:bprevious  
:b # Édite l’avant-dernier tampon édité
:bad fichier Ajoute un tampon à la liste
:badd  
:bd tampon Supprime un tampon
:bdelete  
:bun Décharge un tampon de la mémoire, mais le garde dans la liste
:sb tampon Ouvre un tampon dans un split horizontal
:vert sb tampon Ouvre un tampon dans un split vertical
:tab sb tampon Ouvre un tampon dans un nouvel onglet

3.25.5 Chemins

:sf fichier Recherche le fichier dans la variable path et l'ouvre dans un nouveau split horizontal
:tabf fichier Recherche le fichier dans la variable path et l'ouvre dans un nouvel onglet

3.25.6 Édition

:wa Enregistre tous les fichiers ouverts
:qa Ferme tous les fichiers ouverts et quitte
:xa Sauve tous les fichiers modifiés et quitte

3.25.7 Recherches

Pour rechercher dans plusieurs fichiers, on peut utiliser la commande :vimgrep :

:vimgrep //motifRecherché// /fichiers/

Cette commande établit une liste des endroits où les occurrences du motif sont rencontrées et se déplace au premier élément de la liste. On peut se déplacer dans la liste avec les commandes suivantes :

:cl Affiche la liste
:cope Affiche la liste dans une nouvelle sous-fenêtre
:ccl Ferme la sous-fenêtre de la liste
:cn Va à l'élément suivant
:cp Va à l'élément suivant
:cc N Va à l'élément N

On peut également passer d'une liste à une liste plus ancienne ou plus récente :

:col Va à la liste précédente dans l'historique
:cnew Va à la liste suivante dans l'historique

La variante :

:vimgrepa //motifRecherché// /fichiers/

ajoute les occurrences à la liste au lieu d'en créer une nouvelle.

3.25.7.1 Exemples

La commande :

:vimgrep //motifRecherché// **/*.php

recherche le motif dans tous les fichiers de la sous-arborescence dont le nom se termine par « .php ».

3.25.8 Mode différentiel

Le mode différentiel permet de comparer plusieurs fichiers (de 2 à 4), leurs différences étant mises en évidence.

3.25.8.1 Au lancement

On peut demander le mode différentiel au lancement de vim :

vimdiff /fichiers/

ou :

vim -d /fichiers/
3.25.8.2 Manipulation
:diffsplit fichier Compare le fichier courant avec un autre fichier qui s'ouvre dans un nouveau split horizontal
:vert diffsplit fichier Comme diffsplit mais avec un split vertical
]c Va à la différence suivante
[c Va à la différence précédente
:diffget Modifie le fichier courant pour annuler les différences avec un autre fichier
do  
:diffput Modifie un autre fichier pour annuler les differences avec le fichier courant
dp  

3.26 Traitement par lot

:g//motif///commande/ Exécute la même commande ex à toutes les lignes correspondant à motif
:g!//motif///commande/ Exécute commande à toutes les lignes ne correspondant pas à motif
:g//motif//normal commande Exécute la même commande du mode normal à toutes les lignes correspondant à motif
:v Équivalent à :g!

Exemples :

:g//motif//p Affiche toutes les lignes correspondant à motif
:g//motif//d Efface toutes les lignes correspondant à motif

3.26.1 Multi-fichiers

:argdo commande Applique une même ligne de commande à tous les arguments
:bufdo commande Applique une même ligne de commande à tous les tampons
:tabdo commande Applique une même ligne de commande à tous les onglets
:windo commande Applique une même ligne de commande à tous les splits
:argdo normal commande Applique une même commande du mode normal à tous les arguments
:bufdo normal commande Applique une même commande du mode normal à tous les tampons
:tabdo normal commande Applique une même commande du mode normal à tous les onglets
:windo normal commande Applique une même commande du mode normal à tous les splits

Il faut parfois placer la commande dans une chaîne de caractère afin de la séparer de la suivante. Exemple :

:argdo exe "normal commande-1" ¦ commande-2 Applique une même commande du mode normal
  impliquant une insertion à tous les arguments

3.27 Labels

Un label (ou tag en anglais) permettent de mémoriser le lieu de définition ou de développement correspondant à un mot-clé.

3.27.1 Fichier des labels

Pour utiliser les labels, il faut d'avoir remplir un fichier les contenant. En voici le format :

/label1/ /fichier1/ /commande1/
/label2/ /fichier2/ /commande2/
/label3/ /fichier3/ /commande3/
/.../

Les colonnes sont séparées par des tabulations. Les fichiers sont ceux contenant les définitions des labels correspondant, et les commandes sont les commandes vim permettant d'y accéder. Le plus souvent, il s'agit de motifs de recherche :

/label1/ /fichier1/ //motif1//
/label2/ /fichier2/ //motif2//
/label3/ /fichier3/ //motif3//
/.../

Attention toutefois, à part ^ et $, vim considère tous les caractères d'un fichier de labels de façon littérale. Un motif de recherche vim :

/.*bidule.*/

deviendra :

/\.\*bidule\.\*/

dans le fichier de labels. Voir :

:h magic

pour plus de détails.

3.27.1.1 Tri

Si le fichier des labels est trié, les recherches sont plus rapides.

3.27.2 Chemin

On ajoute le nom du fichier de labels dans le chemin d'accès :

set tags+=/fichierDesLabels/

ou, si le fichier est dans le répertoire courant des fichiers concernés :

set tags+=.//fichierDesLabels/

3.27.3 Déplacements

3.27.3.1 Lancement

On peut demander à vim d'aller directement à un label au démarrage :

vim -t /label/
3.27.3.2 Ligne de commande
:ta label Va à la définition d'un label
:ta /motif <tab> Donne une liste de complétion des tags correspondant à un motif
:tags Affiche la pile des labels
:pop N retourne N entrées en arrière dans la pile des labels
:ts nom Affiche le menu de sélection des labels homonymes
:ts /motif Affiche le menu de sélection des labels correspondant à un motif
:tn Va à la correspondance suivante de :ts
:tp Va à la correspondance précédente de :ts
3.27.3.3 Mode normal
<ctrl ]> Va à la définition du label situé sous le curseur
<ctrl t> Retourne en arrière dans la pile des labels
g] Affiche le menu de sélection des labels correspondant au mot situé sous le curseur

3.27.4 Complétion

Dans le sous-mode ctrl-X du mode insertion, la commande :

<ctrl ]>

propose le choix de complétion suivant d'après les labels.

3.28 Mise en forme

3.28.1 Casse

U Place la sélection en majuscules
u Place la sélection en minuscules
gU mouvement Place en casse majuscule du curseur jusqu'à la fin du mouvement
gu mouvement Place en casse minuscule du curseur jusqu'à la fin du mouvement
~ Alterne la casse du caractère sous le curseur ou de la sélection
g~ mouvement Alterne la casse depuis le curseur jusqu'à la fin du mouvement

3.28.2 Fusion de lignes

: plage j Fusionne les lignes d'une plage
J Fusionne deux lignes

3.28.3 Largeur du texte

set textwidth=/N/ Définit une largeur maximale pour le texte
gq Formate le texte sélectionné pour que la largeur ne dépasse pas la largeur maximale
gq mouvement Formate le texte du curseur jusqu'à la fin du mouvement pour que la largeur ne dépasse pas la largeur maximale
gw Comme gq, mais laisse le curseur à sa position préalable
3.28.3.1 Objets textuels

Le mouvement peut être un objet textuel. Exemples :

gqap Formate le paragraphe courant

3.28.4 Nombres

<ctrl a> Incrémente un nombre
<ctrl x> Décrémente un nombre

3.28.5 Chiffrement

g? Encode / Décode la sélection en ROT 13

3.29 Orthographe

3.29.1 Installation

Si le dictionnaire de votre langue est déjà installé, il suffit d'activer l'option :

set spell

La langue se définit par :

set spelllang=en

pour l'anglais ou :

set spelllang=fr

pour le français. Si vous voulez utiliser les deux langues, il suffit de faire :

set spelllang=en,fr

Si vous recevez un message d'erreur, c'est que le dictionnaire n'est pas installé. Dans ce cas, il vous faut d'abord obtenir un dictionnaire sous forme d'un fichier contenant une liste de mot. On peut en créer un léger avec les erreurs les plus courantes soi-même, mais il en existe de disponibles sur internet, par exemple ici :

http://extensions.libreoffice.org/extension-center/dictionnaires-francais">http://extensions.libreoffice.org/extension-center/dictionnaires-francais

pour les dictionnaires français ou :

http://extensions.libreoffice.org/extension-center/american-british-canadian-spelling-hyphen-thesaurus-dictionaries">http://extensions.libreoffice.org/extension-center/american-british-canadian-spelling-hyphen-thesaurus-dictionaries

pour les dictionnaires anglais. On extrait si nécessaire les fichiers de l'archive contenant les dictionnaires, puis on lance vim et on construit le dictionnaire utilisable par vim avec la commande :

:mkspell /langage/ /dictionnaire(s)/

Par défaut, vim recherche les listes de mots dans :

/dictionnaire(s)/
/dictionnaire(s)/.dic
/dictionnaire(s)/.aff

La commande mkspell crée le fichier :

/langage/./encodage/.spl

que l'on déplace dans le répertoire :

~/.vim/spell

Il ne reste plus qu'à activer l'option de correction orthographique :

set spell
set spelllang=/langue(s)/

3.29.2 Utilisation

]s Va au mot erroné suivant
[s Va au mot erroné précédent
z= Ouvre le menu des suggestions de correction du mot sous le curseur
:spellr Répète la correction effectuée par z= dans toutes les occurrences du même mot
zg Marque un mot comme correct
zw Marque un mot comme erroné
zug Annule zg
zuw Annule zw
zG Marque un mot comme correct dans la liste interne des mots
zW Marque un mot comme erroné dans la liste interne des mots
zuG Annule zG
zuW Annule zW

3.29.3 Complétion

On peut définir une liste de fichiers contenant des mots servant à la complétion :

set dictionary=/fichier(s)Dicos(s)/

On peut aussi référencer des fichiers contenant des synonymes :

set thesaurus=/fichier(s)Synonymes(s)/

La complétion basée sur ces fichiers s'utilise comme suit :

<ctrl x> <ctrl k> Complétion avec le dictionnaire
<ctrl x> <ctrl t> Complétion avec les synonymes
<ctrl x> s Suggestions avec le dictionnaire

3.30 Explorateur de fichiers

3.30.1 Lancement

:Ex Ouvre l'explorateur de fichier
:Explore  
:Sexplore Ouvre l'explorateur de fichier dans un nouveau split horizontal
:Hexplore  
:Vexplore Ouvre l'explorateur de fichier dans un nouveau split vertical
:Texplore Ouvre l'explorateur de fichier dans un nouvel onglet
:e . Ouvre l'explorateur de fichier au répertoire courant

3.30.2 Marques

mf Marque un fichier
mr Marque les fichiers correspondant à une expression régulière
mu Démarque tous les fichiers marqués
mt Marque le répertoire courant comme destination

3.30.3 Affichage

i Cycle à travers les modes d'affichage
qf Informations sur un fichier
<ctrl l> Recharge l'affichage
3.30.3.1 Masque
gh Affiche ou non les fichiers commençant par un point
a Affiche ou non les fichiers correspondant au filtre de masquage
mh Ajoute ou enlève les extensions des fichiers marqués au filtre de masquage
<ctrl h> Édite le filtre de masquage
3.30.3.2 Tri
s Cycle à travers les modes de tri
r Inverse l'ordre de tri

3.30.4 Répertoires

c Le répertoire actuel devient le répertoire courant
- Accède au répertoire parent
d Crée un répertoire

3.30.5 Édition

<Return> Ouvre le fichier sous le curseur
o Ouvre le fichier sous le curseur dans un nouveau split horizontal
v Ouvre le fichier sous le curseur dans un nouveau split vertical
t Ouvre le fichier sous le curseur dans un nouvel onglet
% Édite un nouveau fichier dans le répertoire

3.30.6 Recherches

/motif Recherche avant d'un fichier
?/motif/ Recherche arrière d'un fichier

3.30.7 Fichiers marqués

D Efface les fichiers marqués
R Renomme les fichiers marqués
me Place les fichiers marqués dans la liste des arguments
mz Compresse / Décompresse les fichiers marqués
mx Applique une commande shell sur les fichiers marqués
md Compare les fichiers marqués
3.30.7.1 Copie et déplacement
mc Copie les fichiers marqués vers la destination
mm Déplace les fichiers marqués vers la destination

3.30.8 Historique

u Location précédente dans l'historique
U Location suivante dans l'historique
   

3.30.9 Signets

mb Ajoute un signet
mB Supprime un signet
gb Retourne à un signet
qb Liste des signets

3.31 Raccourcis

3.31.1 Maps

Un map associe une chaîne de caractère à une autre chaîne de caractères, qui peut être ordinaire ou contenir une commande. Le map est immédiatement remplacé par la chaîne.

:map raccourci chaîne Associe une chaîne à un raccourci clavier
  (récursif si chaîne contient des raccourcis)
:noremap raccourci chaîne  
  Associe une chaîne à un raccourci clavier (non récursif)
:nmap Comme map et noremap mais en mode normal
:nnoremap  
:cmap Comme map et noremap mais en mode ligne de chaîne
:cnoremap  
:imap Comme map et noremap mais en mode insertion
:inoremap  
:vmap Comme map et noremap mais en mode visuel ou sélection
:vnoremap  
:xmap Comme map et noremap mais en mode visuel
:xnoremap  
:smap Comme map et noremap mais en mode sélection
:snoremap  
:omap Comme map et noremap mais en attente d'un mouvement (après y, d, c, …)
:onoremap  

3.31.2 Abréviations

Une abréviation associe un mot à une chaîne de caractères ordinaire ou contenant une commande. L'abréviation est remplacée par la chaîne au premier espace, tabulation, fin de ligne ou :

<ctrl ]>
:ab abréviation commande Associe une commande à une abréviation
:abbreviate …..  
:unab abréviation Supprime une abréviation
:norea Comme :ab mais non récursif
:ca Comme :ab mais en mode ligne de commande seulement
:ia Comme :ab mais en mode insertion seulement

3.31.3 Commandes

On peut définir une commande personnalisée par :

:com /Commande/ /Définition/

On peut ensuite utiliser :

:/Commande/

Le nom d'une commande personnalisée doit obligatoirement commencer par une majuscule, pour la différencier des commandes internes de vim.

3.31.4 Autocommandes

Une autocommande permet d'associer une action à un événement intervenant sur les fichiers respectant un motif :

:au /événement/ /motif/ /action/

Quelques événements :

BufRead Lecture d'un fichier
BufWrite Écriture d'un fichier
BufEnter Après l'entrée dans un fichier
BufLeave Avant de sortir d'un fichier
BufAdd Ajout d'un fichier à la liste des tampons
BufDelete Suppression d'un fichier de la liste des tampons

Exemples de motif :

*./extension/ Fichier se terminant par une extension

3.32 Scripts

vim -S script Lance vim et lui demande d'exécuter un script de lignes de commande ex au démarrage
#! /usr/bin/vim -S Début d'un script vim exécutable via le shell

3.32.1 Variables

let variable = valeur Assigne une valeur à une variable
let @/variable/ = valeur Assigne une valeur à un registre
let &/option/ = valeur Assigne une valeur à une option
set option = valeur  
let $/variable/ = valeur Assigne une valeur à une variable d'environnement
unlet variable Détruit une variable
3.32.1.1 Portée
g:/variable/ Variable globale
s:/variable/ Variable locale au script
a:/variable/ Argument d'une fonction
l:/variable/ Variable locale à une fonction
v:/variable/ Variable interne de vim
b:/variable/ Variable locale à un tampon
w:/variable/ Variable locale à une fenêtre

3.32.2 Liste

On définit une liste par :

let /liste/ = [/element-1/, /element-2/, ...]

On accède à un élément d'une liste par :

let /var/ = /liste/[/indice/]
let /liste/[/indice/] = /valeur/
3.32.2.1 Liste de listes

Une liste peut en contenir d'autres :

let /liste/ = [ [...], [...], ... ]
3.32.2.2 Copie

Par défaut, assigner une liste à une autre procède par adresse. Il n'y a donc pas de copie des éléments :

let /listeB/ = /listeA/

Pour copier les éléments, il faut utiliser :

let /listeB/ = copy(/listeA/)

Si certains éléments sont eux-mêmes des listes et qu'on souhaite copier leurs éléments, il faut utiliser la copie en profondeur :

let /listeB/ = deepcopy(/listeA/)

3.32.3 Dictionnaires

On définit un dictionnaire par :

let /dictionnaire/ = {'/cle-1/': '/valeur-1/', '/cle-2/': '/valeur-2/' ...}

On accède à un élément d'un dictionnaire par :

let var = dictionnaire[/cle/] let dictionnaire[/cle/] = valeur

ou :

let var = dictionnaire./cle/ let dictionnaire./cle/ = valeur

3.32.3.1 Fonctions
keys(dictionnaire) Donne la liste des clés d'un dictionnaires
values(dictionnaire) Donne la liste des valeurs d'un dictionnaires
items(dictionnaire) Retourne une liste où chaque élément est de la forme [clé, valeur]

3.32.4 Affichage

La commande echo affiche à la sortie standard.

echo "chaîne" Affiche une chaîne de caractères
echo var Affiche le contenu d'une variable
echo @/var/ Affiche le contenu d'un registre
echo &/option/ Affiche le contenu d'une option
set option  
3.32.4.1 Commandes silencieuses
silent commande Exécute une commande sans rien afficher à l'écran
3.32.4.2 Redirection
redir > fichier Redirige la sortie standard vers un fichier
redir ! > fichier Redirige la sortie standard vers un fichier, écrase le fichier s'il existe
redir >> fichier Redirige la sortie standard en ajout vers un fichier
redir @/registre/ Redirige la sortie standard vers un registre (a … z)
redir @/registre/>  
redir @/registre/>> Redirige la sortie standard en ajout vers un registre (a … z)
redir @/Registre/ Redirige la sortie standard en ajout vers un registre (A … Z)
redir @/Registre/>  
redir => variable Redirige la sortie standard vers une variable
redir =>> variable Redirige la sortie standard en ajout vers une variable
redir END Termine la redirection en cours
3.32.4.3 Capture

Le registre de capture permet d'insérer facilement le contenu d'une variable dans un fichier :

:let variable="contenu"
i <ctrl r>=variable <Return> <esc>

On obtient le même résultat en écrivant dans un registre :

:let @a="contenu"
"a p

ou en utilisant une redirection :

:let a= ...
:redir @a
:echo a
:redir END
"a p

3.32.5 Source

:so script Exécute un script
:source …..  
:so % Exécute le fichier en cours d'édition

3.32.6 Fonctions

On définit une fonction par :

function /Fonction/()
/.../
endfunction

On l'appelle ensuite par :

:call /Fonction/()

Le nom d'une fonction personnalisée doit obligatoirement commencer par une majuscule, pour la différencier des fonctions internes de vim.

3.32.6.1 Return

L'instruction return permet de retourner une valeur. Exemple :

function Fonction()
return "chaine"
endfunction

Cette valeur peut être ensuite placée dans une variable :

let variable = Fonction()

3.32.7 Commande

Une commande se définit par :

:com /Commande/ /Expression/

On l'appelle ensuite par :

:/Commande/

et l'expression sera exécutée.

3.32.7.1 Arguments

On peut signaler la présence possible d'arguments dans la définition d'une commande :

:com -nargs=* /Commande/ /Expression/

3.32.8 Commandes et fonctions

On peut définir une commande associée à une fonction par :

:com /Commande/ /:call Fonction/()
3.32.8.1 Arguments

Les arguments d'une commande peuvent être passé à une fonction sous forme de liste d'arguments via le symbole <f-args> :

:com -nargs=* /Commande/ /:call Fonction/(<f-args>)

Ils peuvent aussi être passés sous forme de chaîne de caractères entourée de guillemets via le symbole <q-args> :

:com -nargs=* /Commande/ /:call Fonction/(<q-args>)

3.32.9 Fichiers

:/commande/ % Applique une commande au fichier courant
:/commande/ # Applique une commande au fichier alternatif
  (fichier édité juste avant le fichier courant)

3.32.10 Boucles

for elt in liste

endfor

while condition

endwhile
continue Passe à l'itération suivante
break Sort de la boucle
finish Termine l'exécution du script

3.33 Sessions

Une session est un script vim permettant de revenir ultérieurement à l'état actuel (configuration, tampons, splits, onglets, …). On sauve une session de vim par la commande ex :

:mksession /fichier/

On la restaure ensuite en lançant vim avec l'option -S et le nom du fichier contenant la session :

vim -S /fichier/

On peut aussi exécuter la session dans vim même :

:so /fichier/

3.34 Divers

3.34.1 Caractères

ga Affiche le numéro du caractère sous le curseur
g8 Affiche le numéro utf-8 du caractère sous le curseur

3.34.2 Digraphes

Un digraphe est une combinaison de deux caractères qui permet insérer un caractère spécial (symboles, lettres de certaines langues, etc).

:dig Affiche la liste des digraphes
:dig caractère-1 caractère-2 numéroDuCaractère Définit un digraphe
<ctrl k> caractère-1 caractère-2 Insère un digraphe (en mode insertion)

3.34.3 Contextuel

gf Ouvre le fichier dont le nom est sous le curseur
<ctrl w> f Ouvre le fichier dont le nom est sous le curseur dans un split horizontal
K Ouvre la page de manuel pour la commande dont le nom est sous le curseur

3.35 Commandes externes

: ! commande Exécute une commande externe via le shell
: ! commande % Applique une commande externe au fichier courant
: !! Répète la dernière commande externe

3.35.1 Insertion

: r ! commande Insère la sortie standard d'une commande shell dans le fichier courant
: … `/commande/` … Utilise la sortie d’une commande externe au sein d’une commande ex.
: … `=/expression/` … Utilise le résultat d’une expression vim (variable, fonction, …) au sein d’une commande ex.

3.35.2 Filtre

On peut filtrer une plage de texte en l'envoyant à l'entrée d'une commande externe et en la remplaçant par la sortie :

: plage ! commande Filtre la plage donnée à travers la commande
! mouvement commande Filtre du curseur jusqu'au point obtenu après le mouvement
N !! commande Filtre N lignes à partir de la ligne courante
! commande En mode visuel, filtre la sélection
3.35.2.1 Exemples
: plage ! sed -n '//expression//p' Conserve uniquement les lignes correspondant à expression
: plage ! sed '//expression//d' Efface uniquement les lignes correspondant à expression

3.35.3 Terminal

Pour accéder à un shell dans un terminal, on entre :

:sh

3.36 Langages externes

3.36.1 Perl

Une fois le paquet vim-perl installé, vim permet d'exécuter des commandes et scripts perl :

:pe commandePerl Exécute une commande perl
:perl …..  
perl << signalFin Herescript perl
…..  
signalFin  

3.36.2 Python

Une fois le paquet vim-python installé, vim permet d'exécuter des commandes et scripts python :

:py commandePython Exécute une commande python
:python …..  
:pyf scriptPython Exécute un script python
:pyfile …..  
python << signalFin Herescript python
…..  
/signalFin/</td>  

De son coté, python dispose d'un module lui permettant d'exécuter des commandes vim :

import vim vim.command("commandeVim")

Il peut également demander des données :

/chaine/ = vim.eval("input('/Donnez une chaîne/ :')")

Le tuple vim.buffers permet de boucler sur les tampons ouverts :

for tampon in vim.buffers :

print /tampon/.name

Le tampon courant porte un nom particulier :

vim.current.buffer

Chaque tampon peut être vu comme une liste de lignes. On peut donc par exemple ajouter une ligne à la fin :

vim.current.buffer.append("/ligne/")

Le tuple vim.windows contient la liste des fenêtres. La fenêtre courante est désignée par vim.current.window. Un exemple qui modifie la position du curseur :

vim.current.window.cursor(/M/, /N/)

3.36.3 Ruby

Une fois le paquet vim-ruby installé, vim permet d'exécuter des commandes et scripts python :

:rub commandeRuby Exécute une commande python
:ruby …..  
:rubyf scriptRuby Exécute un script python
:rubyfile …..  
ruby << signalFin Herescript ruby
…..  
/signalFin/</td>  

3.37 Extensions

Les extensions (ou plugin, addon en anglais) permettent d'étendre les fonctionnalités d'un programme. Voici une liste non exhaustive de plugins pour vim que je trouve utiles :

3.37.1 Gestionnaires d’extensions

vim-addon-manager Regroupe tous les répertoires de plugins dans un même dossier. Permet d’activer des plugins à volonté
pathogen Regroupe tous les répertoires de plugins dans un même dossier
Vimball Création d'archives contenant des plugins installables avec :so %
GetLatestVimScripts Mise à jour automatique des plugins qui le supportent
paquet : vim-addon-manager Paquet ubuntu, fournit la commande vim-addons

3.37.2 Fichiers, tampons

bufexplorer Explorateur des tampons
Command-T Ouverture rapide d'un fichier
LustyExplorer Explorateur de fichiers et de tampons
NERD Tree Explorateur de fichiers

3.37.3 Complétion

SuperTab continued Complétion avec la touche <tab>
AutoComplPop Menu automatique pour complétion
FuzzyFinder Fichiers, tampons, étiquettes, commandes, etc avec complétion floue

3.37.4 Étiquettes

Yate Liste dynamique de correspondances lors d’une recherche de tag.
taglist Liste de tags organisée

3.37.5 Copier - Coller

YankRing Explorateur des derniers Copier / Coller

3.37.6 Bouts de code, squelettes

UltiSnips Complétion de textes courants avec sauts prédéfinis
tSkeleton Modèles pour les nouveaux fichiers

3.37.7 Filtre

NarrowRegion Ouvre une partie du fichier dans un autre tampon afin de réaliser des opérations sur cette partie seulement

3.37.8 Commentaires

tComment Commenter et décommenter du texte
NERD Commenter Commenter et décommenter du texte

3.37.9 VCS

rcs Gestion de Revision Control System
vcscommand Commandes svn, cvs, …

3.37.10 Mode visuel

visPlugin Opérations en mode visuel
visincr Incrémentation visuelle
visswap Échange visuel
vissort Tri visuel

3.37.11 Thèmes

Color Sample Pack Thèmes
CSApprox Permet d'utiliser les thèmes graphiques en mode console

3.37.12 Divers

Align Alignement
AutoAlign Alignement automatique
cecscope Utilisation de cscope pour les recherche dans un code
conque Lancement d'un terminal dans un tampon
DirDiff Différences entre répertoires
LogiPat Logique sur expressions régulières
ManPageView Pages de manuel
matchit Correspondances étendues entre objets (), [], {}, balises XML/HTML ouvrantes et fermantes, etc
searchInRuntime Recherche de fichiers avec complétion
surround Gestion des délimiteurs (), [], {}, balises XML/HTML, etc
project Gestion des projets
utl Liens internes actifs : fichiers, signets, http, références, notes de bas de page, etc
vimomni Omni-complétion vim
pythoncomplete Omni-complétion python
delimitMate Ferme automatiquement les (), [], {}, etc
xmledit Édition XML/HTML

3.37.13 Installation

3.37.13.1 Zip

Pour installer les plugins au format zip, il faut en général les extraire dans ~/.vim, puis aller dans ~/.vim/doc, lancer vim et exécuter :

:helptags .

pour mettre à jour l'aide intégrée de vim.

3.37.13.2 Vimballs

Pour les extensions sous forme de vimball (extension .vba), il suffit d'éditer le fichier dans vim et de faire :

:so %

pour lancer l'installation.

3.38 Configuration

Toutes les commandes, options que vous voulez appliquer systématiquement à chaque démarrage de vim peuvent être placées dans le fichier ~/.vimrc. Voici un exemple commenté de <a href="exemples/vimrc.txt">vimrc</a>. Si l'encodage n'est pas correct, vous pouver changer l'option dans firefox :

Affichage ⟼ Encodage des caractères ⟼ UTF 8

Quelques exemples :

set shell=/usr/bin/zsh Définit le shell par défaut
set path+=/répertoire/ Ajoute un répertoire dans la liste des chemins
set guifont=Monospace\ 12 Définit la police pour gvim
set backspace=eol,indent,start Activation de la touche backspace
syntax on Active la coloration syntaxique
set number Affiche les numéros de ligne
set cursorline Souligne la ligne courante
set showmatch Montre les (), [], {} correspondantes
set scrolloff=4 Minimum 4 lignes visibles à l'écran au-dessus et en-dessous du curseur
set wrap Coupe les longues lignes en plusieurs lignes écran
set incsearch Recherche incrémentale
set ignorecase Ignore la casse

4 Ctags

4.1 Présentation

Le logiciel ctags du paquet exuberant-tags permet de générer automatiquement des fichiers labels utilisables par vim sur les objets de langages variés : classes et fonctions python, ancres html et beaucoup d'autres, sans compter les objets de langages personnalisés.

4.2 Langages

4.2.1 Création

On peut ajouter un langage personnel en insérant :

--langdef=/langage/

dans le fichier ~/.ctags.

4.2.2 Associations

On associe des extensions à un langage en insérant une ligne de la forme :

--langmap=/langage/:./ext1/./ext2/./ext3/

dans le fichier ~/.ctags. Les fichiers de la forme :

*./ext1/
*./ext2/
*./ext3/

sont alors associés au langage.

4.2.3 Objets

On peut définir de nouveaux labels par la syntaxe :

--regex-/langage/=//motif///label///code/,/catégorie//

Le motif contient une expression régulière étendue qui permet de trouver les lignes des labels. Le label contient en général une rétro-référence permettant de donner un nom à chaque label trouvé. Le code est une lettre permettant de regrouper les labels du langage en catégories. La chaîne catégorie correspond au nom de la catégorie.

L'exemple suivant définit le langage css et considère comme labels les lignes de la forme :

/bidule/ {

4.3 Prévisualisation

On peut obtenir une prévisualisation des labels générés par ctags par :

ctags -x /fichier(s)/

4.4 Génération

La commande :

ctags -V *

génère le fichier label (tags par défaut) pour le répertoire courant. Les fichiers de langages inconnus sont ignorés. Si on veut inclure les sous-répertoire, on a la variante :

ctags -RV *

5 Emacs

5.1 Aide

<ctrl h> <ctrl h> Aide à propos de l'aide
<ctrl h> <ctrl a> À propos d’emacs
<ctrl h> <ctrl e> À propos d’emacs et des paquets
<ctrl h> <ctrl f> FAQ (questions fréquemment posées)
<ctrl h> i Lance l’aide de type info
<ctrl h> r Manuel d’emacs dans info
<ctrl h> t Tutoriel
<ctrl h> n Nouveautés
<ctrl h> p Trouve les paquets liés à un sujet
<ctrl h> d motif Affiche l’aide correspondant à un motif
<ctrl h> a motif Aide à propos d’un mot-clé
<ctrl h> m Aide à propos du mode en cours
<ctrl h> v variable Documentation et contenu d'une variable
<ctrl h> f fonction Documentation d'une fonction
<ctrl h> w fonction Quel raccourci clavier exécute la fonction ?
<ctrl h> c raccourci Quelle fonction exécute le raccourci clavier ?
<ctrl h> k raccourci Documentation d'un raccourci
<ctrl h> b Affiche tous les raccourcis
<ctrl h> e Va vers le tampon des messages
<ctrl h> l Dernières entrées
<ctrl h> I Aide au sujet d’une méthode d’entrée
<ctrl h> h Message de bienvenue

5.2 Argument

<ctrl u> nombre commande Donne un argument numérique à une commande
<ctrl u> N commande Répète N fois une commande qui accepte le mode de répétition

5.3 Édition

<ctrl x> <ctrl f> Ouvre un fichier
<ctrl x> d Ouvre un répertoire
<ctrl x> <ctrl s> Sauve le fichier courant
<ctrl x> <ctrl w> Sauve le fichier courant sous un nom donnée
<ctrl x> <ctrl c> Quitte emacs

5.4 Tampons

<ctrl x> <ctrl b> Liste des tampons (fichiers ouverts, informations diverses)
<ctrl x> b tampon Va à un tampon. La complétion est disponible.
<ctrl x> <right> Tampon suivant
<ctrl x> <ctrl right>  
<ctrl x> <left> Tampon précédent
<ctrl x> <ctrl left>  
<ctrl x> k Supprime un tampon

5.5 Éclatement

<ctrl x> 0 Ferme le split courant
<ctrl x> 1 Seulement le split courant
<ctrl x> 2 Split horizontal
<ctrl x> 3 Split vertical

5.6 Fonctions

<alt x> Entre dans le mini-tampon. Permet d'entrer le nom d'une fonction à exécuter
<alt x> fonction Exécute une fonction
<ctrl g> Annule la commande en cours et sort du mini-tampon
<ctrl x> <ctrl e> Évalue l'expression lisp précédant le curseur
motUn-motDeux-motTrois-… Nom typique d'une fonction
u-d-t/<tab> ⟼ /un-deux-trois Complétion mot par mot

5.6.1 Fonctions

finder-commentary Documentation d'une bibliothèque

5.7 Mouvements

<ctrl f> Caractère suivant
<ctrl b> Caractère précédent
<ctrl n> Ligne suivante
<ctrl p> Ligne précédente
<alt n> Mot suivant
<alt p> Mot précédent
<ctrl a> Début de la ligne
<ctrl e> Fin de la ligne
<ctrl v> Page suivante
<alt v> Page précédente
[alt <] Début du fichier
[alt >] Fin du fichier

5.8 Recherche

<ctrl s> Recherche

5.9 Pliage

<ctrl u> Nombre <ctrl x> $ Règle le niveau de pliage
<ctrl x> $ Déplie tout

5.10 Copier, coller

<ctrl espace> Place la marque sous le curseur
<ctrl @>  
<ctrl x> <ctrl x> Échange la marque et le curseur
<alt w> Copie de la marque au caractère précédant le curseur
<ctrl w> Coupe de la marque au caractère précédant le curseur
<ctrl x> r k Coupe en rectangle de la marque au caractère précédant le curseur
<ctrl y> Colle
<alt y> Colle l’élément précédant dans la pile des extraits copiés (doit suivre ctrl y)
<alt d> Coupe jusqu'au début du mot suivant
<ctrl k> Coupe jusqu'à la fin de la ligne

5.11 Annulation

<ctrl _> Annulation
<ctrl x> u Annulation

6 Tex - Latex

6.1 Généralités

\[/équation/\] Grande équation
\(/équation/\) Petite équation insérée dans un paragraphe
{expression} Groupement
^ Exposant
_ indice
( expression) \left( expression \right) Parenthèses
[ expression/] \left[ /expression \right] Crochets
\{ expression\} \left\{ expression \right\} Accolades
expression ⟩ \left⟨ expression \right⟩ Angles
¦ expression ¦ \left ¦ expression \right ¦ Barres
expression \ ¦ \left\¦ expression \right\ ¦ Doubles barres
\big \Big \bigg \Bigg Contrôle de la taille de (), [], {}, …

6.2 Symboles

&empty;
&forall;
&exist;
&infin;
&dagger;
\ddagger &Dagger;

6.3 Relations

&isin;
&notin;
\subseteq &sube;
&sub;
\supseteq &supe;
&sup;
&equiv;
&ne;
&le;
&ge;

6.4 Opérations

&cup;
&cap;
× &times;
&oplus;
&otimes;
÷ &divide;

6.5 Opérateurs

suprémum
inf infimum
lim limite
limsup limite supérieure
liminf limite inférieure
&sum;
&prod;
intégrale &int;
Dérivée (partielle) &part;

6.6 Polices

\mathbb{/lettre/} Lettres doubles
\mathfrak{/lettre/} Lettres germaniques
\mathbb{N} Ensemble des naturels
\mathbb{Z} Ensemble des entiers
\mathbb{Q} Ensemble des rationnels
\mathbb{R} Ensemble des réels

6.7 Lettres grecques

6.7.1 Minuscules

α &alpha;
β &beta;
γ &gamma;
δ &delta;
ε &epsilon;
ε variante &epsilon;
ζ &zeta;
η &eta;
θ &theta;
ϑ variante &theta;
ι &iota;
κ &kappa;
λ &lambda;
μ &mu;
ν &nu;
ξ &xi;
π &pi;
ϖ variante &pi;
ρ &rho;
\varrho variante &rho;
σ &sigma;
ς variante &sigma;
τ &tau;
υ &upsilon;
φ &phi;
ϕ variante &phi;
χ &chi;
ψ &psi;
ω &omega;

6.7.2 Majuscules

Γ &Gamma;
Δ &Delta;
Θ &Theta;
Λ &Lambda;
Ξ &Xi;
Π &Pi;
Σ &Sigma;
Υ &Upsilon;
Φ &Phi;
Ψ &Psi;
Ω &Omega;

7 XHTML

7.1 Lettres et ponctuation

Code &Code;
eacute &eacute;
agrave &agrave;
euml &euml;
ecirc &ecirc;
ccedil &ccedil;
ntilde &ntilde;
scaron &scaron;
oslash &oslash;
aelig &aelig;
oelig &oelig;
eth &eth;
thorn &thorn;
quot &quot;
laquo «
raquo »
mdash
ndash &ndash;
hellip &hellip;
iexcl &iexcl;
iquest &iquest;
middot &middot;
emsp espace « »
ensp 1/2 espace
thinsp 1/6 espace
nbsp espace insécable « »
amp &
sect &sect;
para &para;

7.2 Alphabet grec

Code &Code;
alpha &alpha;
beta &beta;
gamma &gamma;
delta &delta;
epsilon &epsilon;
theta &theta;
thetasym &thetasym;
lambda &lambda;
mu &mu;
pi &pi;
piv &piv;
sigma &sigma;
sigmaf &sigmaf;
phi &phi;
chi &chi;
psi &psi;
omega &omega;
Gamma &Gamma;
Delta &Delta;
Theta &Theta;
Lambda &Lambda;
Pi &Pi;
Sigma &Sigma;
Phi &Phi;
Chi &Chi;
Psi &Psi;
Omega &Omega;

7.3 Mathématiques

Code &Code;
lang &lang;
rang &rang;
empty &empty;
forall &forall;
exist &exist;
not &not;
infin &infin;
dagger &dagger;
Dagger &Dagger;
permil &permil;
ang &ang;
perp &perp;
isin &isin;
notin &notin;
sub &sub;
sup &sup;
sube &sube;
supe &supe;
nsub &nsub;
equiv &equiv;
sim &sim;
ne &ne;
cong &cong;
asymp &asymp;
lt <
gt >
le &le;
ge &ge;
cap &cap;
cup &cup;
plusmn &plusmn;
minus &minus;
sdot &sdot;
bull &bull;
times &times;
divide &divide;
oplus &oplus;
otimes &otimes;
lowast &lowast;
radic &radic;
sum &sum;
prod &prod;
int &int;
part &part;
nabla &nabla;
uarr &uarr;
larr &larr;
rarr &rarr;
darr &darr;
harr &harr;
uArr &uArr;
lArr &lArr;
rArr &rArr;
dArr &dArr;
hArr &hArr;

7.4 Musique

Code &Code;
#9833; &#9833;
#9834; &#9834;
#9835; &#9835;
#9836; &#9836;
#9837; &#9837;
#9838; &#9838;
#9839; &#9839;

7.5 Finance

Code &Code;
euro &euro;
pound &pound;
yen &yen;
copy &copy;
trade &trade;
reg &reg;
#x20A4 &#x20A4;
20A1 &#x20A1;

7.6 Divers

Code &Code;
spades &spades;
hearts &hearts;
diams &diams;
clubs &clubs
#9775 &#9775;
#8258 &#8258;
#9728 &#9728;
#9729 &#9729;
#9730 &#9730;
#9818 &#9818;
#9819 &#9819;
#9820 &#9820;
#9821 &#9821;
#9822 &#9822;
#9823 &#9823;

Auteur: chimay

Created: 2019-10-01 mar 12:34

Validate