\E
ou \e
).Ceci est une ancienne révision du document !
La manière la plus simple d'ouvrir un fichier est de le fournir comme paramètre lors du lancement du programme :
vim <fichier>
Dans ce cas, le curseur se positionnera sur le premier caractère du fichier. Il est possible d'ajouter des options lors de l'ouverture pour se positionner ailleurs dans le fichier :
# Pour positionner le curseur sur une ligne sélectionnée par son numéro vim +<numéro> <fichier> # Pour positionner le curseur sur une ligne sélectionnée par son contenu vim +/<contenu> <fichier> # Pour positionner le curseur sur la dernière ligne vim +$ <fichier>
Il est également possible d'ouvrir un fichier à partir d'un répertoire. Dans ce cas, le contenu du répertoire sera listé et il suffira de sélectionner le fichier ou le répertoire désiré en appuyant sur la touche Enter.
vim <répertoire>
Enfin, il est possible d'ouvrir un fichier une fois que vim est ouvert en saisissant la commande suivante :
:open <fichier>
On oublie tous un jour ou l'autre d'ouvrir un fichier avec les droits appropriés. Quand on se retrouve dans cette situation, on sauve les modifications dans un fichier temporaire puis on applique les modifications dans le fichier original avec les droits appropriés.
Il est possible de ne plus faire ça en utilisant la commande suivante :
:w !sudo tee % >/dev/null
Cette commande lance la commande sudo tee <fichier> et transfère le contenu du fichier sur son entrée standard. La commande tee s'exécute avec les droits appropriés et transfère le contenu de son entrée standard sur le fichier.
On peut même se passer de cette commande en ajoutant l'alias suivant dans le fichier ~/.vimrc :
cnoremap sudow w !sudo tee % >/dev/null
Il suffit ensuite d'appeler l'alias de la manière suivante :
:sudow
Il peut être nécessaire de saisir ce type de caractères lors de l'utilisation de vim. Pour cela, il faut utiliser la combinaison Ctrl+V qui indique à vim de prendre le caractère qui suit tel quel. Certains caractères peuvent être insérés directement (la tabulation par exemple) ou en utilisant un code de contrôle (voir la liste complète).
Caractère | Notation | Séquence |
---|---|---|
Nul | ^@ | Ctrl+V suivi de Ctrl+2 |
Retour chariot | ^M | Ctrl+V suivi de Ctrl+M |
Tabulation | ^I | Ctrl+V suivi de Tab ⇆ |
Certain caractères peuvent être saisis sans utiliser la combinaison Ctrl+V.
Quand on veut appliquer une commande sur plusieurs lignes d'un fichier, il faut utiliser les commandes suivantes :
global
permet d'effectuer la recherche et d'appliquer la commande sur l'ensemble du fichier,normal
permet d'appliquer une série de touches,execute
permet d'appliquer une série de touches comportant des touches spéciales.Voici quelques exemples :
aaa
:g/aaa/d
bbb
à partir du deuxième caractère des lignes contenant aaa
:g/aaa/normal l3ab
^M
à partir du deuxième caractère des lignes contenant aaa
:g/aaa/execute "normal la^M"
Pour plus d'informations, voir ici
Quand on veut recharger le contenu d'un fichier modifié par une action externe, il suffit de lancer la commande :edit
(:e
en notation courte).
Si on ne veut pas conserver le contenu modifié localement, il suffit de lancer la commande :edit!
(:e!
en notation courte).
Le fonctionnement des regexp est inversé par rapport à d'autre logiciel. Pour activer certains motifs, il faut utiliser le caractère d'échappement alors que d'habitude, il faut l'utiliser pour les désactiver.
# Pour supprimer ''n'' espaces suivi de ''|'' suivi de ''n'' chiffres :%s/\s\+|\d\+//
Le changement de casse ne peut se faire qu'avec l'utilisation de références arrières. Il est possible de :
\U
. 1)\L
. 2)\u
.\l
.:%s/Test \(TeSt\) Test/Test \U\1 Test/ # Affiche "Test TEST TEST" :%s/Test \(TeSt\) Test/Test \U\1\E Test/ # Affiche "Test TEST Test" :%s/Test \(TeSt\) Test/Test \L\1 Test/ # Affiche "Test test test" :%s/Test \(TeSt\) Test/Test \L\1\E Test/ # Affiche "Test test Test" :%s/Test \(TeSt\) Test/Test \u\1 Test/ # Affiche "Test TeSt Test" :%s/Test \(TeSt\) Test/Test \l\1 Test/ # Affiche "Test teSt Test"
Voici une solution qui ne nécessite aucun programme supplémentaire :
:%w !xclip -in -selection clipboard
Pour d'autres méthodes, il suffit de faire un tour sur Stack Overflow
:set ff=dos :set ff=unix :set ff=mac
Convert DOS line endings to Linux line endings in vim - Stack Overflow