Vim
De Linuxmemo.
Sommaire |
[modifier] Commandes de bases
Commande | Alternative | Explication |
---|---|---|
k | ↑ | Se déplacer vers le haut |
j | ↓ | Se déplacer vers le bas |
h | ← | Se déplacer vers la gauche |
l | → | Se déplacer vers la droite |
[modifier] Les mouvements
Commande | Alternative | Explication |
---|---|---|
$
| Aller en fin de ligne | |
0
| Aller en début de ligne | |
^
| Aller au premier caractère qui n'est pas un espace ou une tab de la ligne | |
gg
| Aller en début de document | |
G
| Aller en fin de document | |
:<n>
| Aller à la ligne <n> (où <n> est un nombre entier)
| |
f<s>
| Jusqu'au caractère <s> en allant vers l'avant
| |
F<s>
| Jusqu'au caractère <s> en allant vers l'arrière
| |
t<s>
| Jusqu'au caractère <s> en allant vers l'avant et en s'arrêtant juste avant
| |
T<s>
| Jusqu'au caractère <s> en allant vers l'arrière et en s'arrêtant juste avant
|
[modifier] Suppression
Commande | Alternative | Explication |
---|---|---|
x | Le caractère sous le curseur | |
s | Comme x mais entre en mode insertion après
| |
dd | La ligne sous le curseur | |
dw | Le mot sous le curseur | |
d$ | D | Supprime jusqu'à la fin de la ligne |
d<mouvement>
| Du curseur à la cible du déplacement | |
d<sélection>
| La sélection précisée | |
c | Se comporte comme d mais entre en mode insertion après la suppression
| |
u | Annulation de la dernière action | |
CTRL+R | Remettre (annuler l'annulation) |
[modifier] Remplacement
Le caractère sous le curseur r
puis le caractère que l'on veut mettre.
Exemple: sur le mot "lepin", se positionner sur le "e", puis faire un ra
remplacera le "e" par un "a".
Entrer en mode remplacement: <Insert><Insert>
(double appui sur la touche <Insert>
) vous permettra d'entrer en mode remplacement, c'est à dire que le texte que vous saisirez remplacera ce qu'il y a en dessous du curseur. La touche R
permet également de le faire.
[modifier] Macro
Nous ouvrons ce fichier avec vim, puis, pour déclencher l'enregistrement de la macro, nous tapons :
qa
q = enregistrement de la macro
a = nom de la macro
Un avis : Enregistrement survient et tout ce que nous tapons à présent est l'enregistrement de cette macro nommée “a”. Nous pouvons voir en direct sur le texte ce que notre commande vim exécute sur la ligne visée. Terminer la macro par :
q
En cas d'erreur, il suffit de quitter la macro par :
q
puis, d'utiliser la lettre :
u
pour restaurer la ligne et recommencer la macro différemment, en la nommant de manière identique.
Pour relancer cette macro nommée “a”, tapons :
@a
2@a
2 = exécuter 2 fois. À noter que le nombre 2 de la répétition s'adapte aux nombres de lignes que nous voulons modifier. Il peut être supérieur à l'exemple présenté ici. @a = la macro nommée “a”
Et sur validation, les lignes visées seront modifiées.
Il est possible de modifier les macros ! Il suffit de manipuler les registres (registers) qui stockent (entre autres) le contenu des macros. Pour les voir, faites :
:registers
Pour faire appel à ces registres il faut taper " suivi du nom du registre. Par exemple pour coller le registre t dans le document courant je peux faire :
"tp
Il est alors possible d'opérer à toute sorte de changements sur cette ligne pour finalement la recopier dans le registre :
"ty
Voilà, vous savez maintenant comment modifier vos macros.
[modifier] Options pour les substitutions
- %s/foo/bar/g :
globale
- %s/foo/bar/gc :
globale et demande confirmation
- %s/foo/bar/gci :
globale, demande confirmation et ignore la caste
- %s/foo/bar/gcI :
globale, demande confirmation et respect la caste
range: {number} an absolute line number . the current line *:.* $ the last line in the file *:$* % equal to 1,$ (the entire file) *:%* * equal to '<,'> (the Visual area) *:star* 't position of mark t (lower case) *:'* /{pattern}[/] the next line where {pattern} matches *:/* ?{pattern}[?] the previous line where {pattern} matches *:?* \/ the next line where the previously used search pattern matches \? the previous line where the previously used search pattern matches \& the next line where the previously used substitute
pattern matches
[modifier] Action sur recherche
:g/search pattern/command
exemple supprimer les lignes vides :g/^$/d
[modifier] Astuces
- Afficher les numéros de lignes:
:set nu et :set nu! (pour les cacher)
- Convertir tout en minuscules
ggVGu Explication : GG - va à la première ligne de texte V - tourne sur une sélection visuelle, en mode ligne G - va à la fin du fichier (en ce moment que vous avez sélectionné tout le texte) u - minuscule zone sélectionnée
- Convertir tout en majuscules
ggVG[shift]u
- Changer la case
sous le caractère courant: ~ sous le mot courant: g~w sous les 3 mots courant: g~3w sous la ligne courante: guu ou gUU
- Afficher les caractères invisibles
:set list :set list!
Dans le paramétrage par défaut on à les caractères spéciaux de défini ainsi :
: ctrl+v suivi du code du caractère. Par exemple, ctrl+v u 0 3 b 4 donnera δ. (u pour unicode, 03b4 est l'identifiant numérique du delta minuscule dans la norme unicode). Tabulation : ^I (^I s'obtenant comme il est dit ci dessus: Ctrl V + Ctrl i) Saut de ligne : $
Mais on peut personnaliser ces caractères avec la commande set listchars.
Les caractère spéciaux invisibles personnalisables sont :
Saut de ligne : eol Tabulation : tab Espaces de fin de ligne : trail Espace insécable : nbsp
- Suppression des lignes commençant par un #
:g/^#/d
- Supprimer des lignes vides
:g/^$/d
- Se positionner directement sur un nom de variable à l'ouverture d'un fichier de config
vim +/nom_variable /etc/fichier_de_conf
- Commenter de la ligne courante jusqu’à la fin du fichier
:.,$s/^/#/
Les opérateurs ^et $ indiquent des positions (début et fin de ligne) et pas des caractères, c'est pour ça qu'il ne faut pas les reprendre dans le deuxième argument.
- Commenter plusieurs lignes d’un coup
1)_ CTRL+V sur le premier caractère de la première ligne à commenter, 2)_ puis sélectionner toutes les lignes voulues avec la flèche du bas ou la touche J 3)_ Maj+i (I majuscule) 4)_ Insérer le caractère de commentaire (# ou // ou n’importe quoi d’autre ) 5)_ Esc, Esc
[modifier] Liens externes
- (fr) vim.dindinx.net - Traduction de la documentation de Vim.
- (fr) [http://vim-fr.org/index.php/Commandes_de_bases vim-fr.org - Commandes de bases
- http://www.linux-note.com/vim-raccourcis-clavier-en-mode-normale-en-mode-visuel/ -les raccourcis clavier
[modifier] Intervale
On peut donner un intervalle à toute les fonctions du mode Ex (ou command), celles qui commencent par : pour être clair. La combinaison d3w est une commande du mode normal, donc si tu lui donner un intervalle tu dois utiliser la commande :normal pour exécuter des commandes du mode normal dans le mode Ex:
:10,20 normal d3w
[modifier] Memo total
source: http://tnerual.eriogerg.free.fr/vimqrc-fr.html
VIM - CARTE DE RÉFÉRENCE RAPIDE
Mouvement simple | |
h l k j | lettre à gauche, droite ; ligne en haut, bas |
b w | mot à gauche, droite |
ge e | fin du mot à gauche, droite |
{ } | début du paragraphe précédent, suivant |
( ) | début de la phrase précédente, suivante |
0 gm | début, milieu de ligne |
^ $ | première, dernière lettre de la ligne |
nG ngg | ligne n, par défaut la dernière, première |
n% | pourcentage n du document (<i>n</i> obligatoire) |
n| | colonne n de la ligne courante |
% | autre parenthèse, crochet, commentaire, #define |
nH nL | ligne n depuis le début, la fin de la fenêtre |
M | milieu de la fenêtre |
Insertion & remplacement → mode insertion | |
i a | insertion avant, après le curseur |
I A | insertion au début, fin de ligne |
gI | insertion à la première colonne |
o O | nouvelle ligne au dessous, dessus du curseur |
rc | remplace la lettre sous le curseur par c |
grc | comme r, mais sans changer le formattage |
R | remplace le texte à partir du curseur |
gR | comme R, mais sans changer le formattage |
cm | remplace le texte du mouvement m |
cc or S | remplace la ligne courante |
C | remplace jusqu'à la fin de la ligne |
s | remplace un caractère et insère |
~ | change la casse et avance d'une lettre |
g~m | change la casse du mouvement m |
gum gUm | → minusc., majusc. le texte du mvt. m |
<m >m | décale à gauche, droite le texte du mvt. m |
n<< n>> | décale n lignes à gauche, droite |
Suppression | |
x X | supprime le caractère sous, avant le curseur |
dm | supprime le texte du mouvement m |
dd D | supprime la ligne courante, la fin de la ligne |
J gJ | jointe la ligne courante et suivante, sans espace |
:rd↵ | supprime les lignes d'intervalle r |
:rdx↵ | supprime l'intervalle r dans le registre x |
Mode insertion | |
^Vc ^Vn | insère le car. c littéralement, valeur déc. n |
^A | insère le texte précédemment inséré |
^@ | comme ^A & stoppe l'insertion → mode commande |
^Rx ^R^Rx | insère le contenu du reg. x, littéralement |
^N ^P | saisie automatique avant, après le curseur |
^W | supprime le mot avant le curseur |
^U | supprime le texte inséré dans la ligne en cours |
^D ^T | décale à gauche, droite d'une tabulation |
^Kc1c2 or c1←c2 | saisie le digraphe \c1,c2\ |
^Oc | exécute c en mode commande temporaire |
^X^E ^X^Y | défilement haut, bas |
<esc> or ^[ | abandonne l'édition → mode commande |
Copie | |
"x | utilise le registre x pour la prochaine action |
:reg↵ | affiche le contenu de tous les registres |
:reg x↵ | affiche le contenu du/des registre(s) x |
ym | copie le texte de la commande de mouvement m |
yy or Y | copie la ligne courante |
p P | colle après, avant la position du curseur |
]p [p | comme p, P, avec ajustement de l'indentation |
gp gP | comme p, P, avec le curseur à la fin du texte |
Insertion avancée | |
g?m | encode en rot13 le texte de mouvement m |
n^A n^X | +n, -n au nombre sous le curseur |
gqm | justifie le texte du mouvement m |
:rce w↵ | centre les lignes r à la largeur w |
:rle i↵ | aligne à la colonne i les lignes r |
:rri w↵ | aligne à droite les lignes r à la largeur w |
!mc↵ | filtre les lignes du mvt. m avec la cmd. c |
n!!c↵ | filtre n lignes avec la commande c |
:r!c↵ | filtre l'intervalle r avec la commande c |
Mode visuel | |
v V ^V | sélectionne des lettres, lignes, blocs |
o | échange le curseur avec le début de la sélection |
gv | démarre la sélection à la position de la précédente |
aw as ap | sélectionne un(e) mot, phrase, paragraphe |
ab aB | sélectionne un bloc ( ), un bloc { } |
Annulation, répétition & registres | |
u U | annule une commande, restaure la ligne |
. ^R | répète une commande, annule l'annulation |
n. | répète la commande avec le nombre n |
qc qC | enregistre, ajoute la frappe au registre c |
q | stoppe l'enregistrement |
@c | exécute le contenu du registre c |
@@ | répète la commande @ précédente |
:@c↵ | exécute le registre c comme une commande Ex |
:rg/p/c↵ | exécute la commande Ex c |
sur l'intervalle r où le motif p correspond | |
Mouvement complexe | |
- + | ligne en haut, bas sur le 1er caractère non blanc |
B W | mot séparé par un espace à gauche, droite |
gE E | fin du mot séparé par un espace à gauche, droite |
n_ | n-1 lignes en bas sur le 1er caractère non blanc |
g0 | début de ligne d'écran |
g^ g$ | premier, dernier caractère de la ligne d'écran |
gk gj | ligne d'écran en haut, bas |
fc Fc | caractère c suivant, précédent |
tc Tc | avant le caractère c suivant, précédent |
; , | répète le dernier fFtT en sens opposé |
[[ ]] | début de section en arrière, avant |
[] ][ | fin de section en arrière, avant |
[( ]) | (, ) en arrière, avant |
[{ ]} | {, } en arrière, avant |
[m ]m | début de méthode Java en arrière, avant |
[# ]# | #if, #else, #endif en arrière, avant |
[* ]* | début, fin de bloc /* */ en arrière, avant |
Recherche & substitution | |
/s↵ ?s↵ | cherche s en avant, arrière |
/s/o↵ ?s?o↵ | idem, avec un décalage o |
n or /↵ | répète en avant la dernière recherche |
N or ?↵ | répète en arrière la dernière recherche |
# * | recherche en arrière, avant le mot sous le curseur |
g# g* | idem, avec les correspondances partielles |
gd gD | définition locale, globale du mot sous le curseur |
:rs/f/t/x↵ | substitue f par t dans l'intervalle r |
x: g-toutes les occurrences, c-confirme | |
:rs x↵ | répète la subst. avec de nouveaux r & x |
Caractères spéciaux de recherche | |
. ^ $ | tout caractère unique, début, fin de ligne |
\< \> | début, fin de mot |
[c1-c2] | un caractère unique dans l'intervalle c1..c2 |
[^c1-c2] | un caractère unique hors intervalle |
\i \f \I \F | un identificateur, mot-clé ; sans chiffres |
\f \p \F \P | un fichier, car. imprim. ; sans chiffres |
\s \S | un espace simple, autre espacement |
\e \t \r \b | <esc>, <tab>, <↵>, <←> |
\= * \+ | 0..1, 0..∞, 1..∞ des atomes précédents |
\| | sépare deux branches ( ≡ ou) |
\( \) | groupe plusieurs éléments dans un atome |
\& \n | le motif entier, nieme groupe () |
\u \l | le caractère suivant en majuscule, minuscule |
\c \C | ignore, respecte la casse |
Décalage de recherche | |
n or +n | n lignes en avant en colonne 1 |
-n | n lignes en arrière en colonne 1 |
e+n e-n | n caractères à droite, gauche de la fin |
s+n s-n | n caractères à droite, gauche du début |
;sc | exécute la recherche sc suivante |
Marques et déplacement | |
mc | marque la position courante avec c ∈[a..Z] |
`c `C | va à la marque c, C dans n'importe quel fichier |
`0..9 | va à la dernière position en sortie |
`` `" | va à la position avant le saut, dernière édition |
`[ `] | va au début, fin du texte préc. manipulé |
:marks↵ | affiche la liste des marques actives |
:jumps↵ | affiche la liste des sauts |
n^O | va au nieme dernier saut dans la liste |
n^I | va au nieme premier saut dans la liste |
Allocation de touches & abbréviation | |
:map c e↵ | alloue c ↦ e en mode normal & visuel |
:map! c e↵ | alloue c ↦ e en mode insertion & cmd. |
:unmap c↵ :unmap! c↵ | supprime l'alloc. pour c |
:mk f↵ | sauvegarde les paramètres dans le fichier f |
:ab c e↵ | ajoute l'abbréviation pour c ↦ e |
:ab c↵ | liste les abbréviations commençant par c |
:una c↵ | supprime l'abbréviation pour c |
Étiquettes | |
:ta t↵ | va à l'étiquette t |
:nta↵ | va à la nieme nouvelle étiquette |
^] ^T | va à l'étiquette sous le curseur, revient |
:ts t↵ | liste les étiquettes pour sélection |
:tj t↵ | va à l'étiquette ou sélectionne si plusieurs |
:tags↵ | affiche la liste des étiquettes |
:npo↵ :n^T↵ | revient de, va à la nieme dernière |
:tl↵ | va à la dernière étiquette utilisée |
^W} :pt t↵ | prévisualise l'étiquette sous le curseur, t |
^W] | sépare la fenêtre et montre l'étiq. sous le curseur |
^Wz or :pc↵ | ferme la fenêtre de prévisualisation |
Défilement & multi-fenêtrage | |
^E ^Y | défile une ligne en haut, bas |
^D ^U | défile une demi-page en haut, bas |
^F ^B | défile une page en haut, bas |
zt or z↵ | place la ligne courante en haut de la fenêtre |
zz or z. | place la ligne courante au centre de la fenêtre |
zb or z- | place la ligne courante au bas de la fenêtre |
zh zl | défile un caractère à droite, gauche |
zH zL | défile une demi-fenêtre à droite, gauche |
^Ws or :split↵ | sépare la fenêtre courante en deux |
^Wn or :new↵ | créé une nouvelle fenêtre vide |
^Wo or :on↵ | agrandit la fenêtre courante |
^Wj ^Wk | va à la fenêtre au dessous, dessus |
^Ww ^W^W | va à la fenêtre au dessous, dessus (enroule) |
Commandes Ex (↵) | |
:e f | édite le fichier f, sauf si changements |
:e! f | édite le fichier f (par défaut celui en cours) |
:wn :wN | sauve le fichier et édite le suivant, précédent |
:n :N | édite le fichier suivant, précédent dans la liste |
:rw | sauvegarde l'intervalle r dans le fichier en cours |
:rw f | sauvegarde l'intervalle r dans le fichier f |
:rw>>f | ajoute l'intervalle r au fichier f |
:q :q! | quitte et confirme, quitte sans sauvegarder |
:wq or :x or ZZ | sauvegarde et quitte |
<up> <down> | rappele les cmd. comme celle en cours |
:r f | insère le fichier f sous le curseur |
:r! c | insère le résultat de la cmd. c sous le curseur |
:args | affiche la liste des arguments |
:rco a rm a | copie, déplace l'interv. r après la ligne a |
Intervalles Ex | |
, ; | sépare deux lignes, la première ligne |
n | un numéro de ligne absolu n |
. $ | la ligne courante, la dernière ligne |
% * | le fichier entier, la sélection visuelle |
't | la position de la marque t |
/p/ ?p? | la ligne suivante, précédente où p correspond |
+n -n | +n, -n au numéro de ligne précédent |
Pliage | |
zfm | créé un pli avec le mouvement m |
:rfo | créé un pli sur l'intervalle r |
zd zE | supprime le pli sous le curseur, tous |
zo zc zO zC | ouvre, ferme un pli, récursivement |
[z ]z | début, fin du pli ouvert en cours |
zj zk | début, fin du pli suivant, précédent |
Divers | |
:sh↵ :!c↵ | lance un shell, exécute c dans un shell |
K | affiche l'aide man du mot-clé sous le curseur |
:make↵ | lance make, lit les erreurs et va à la 1ère |
:cn↵ :cp↵ | affiche l'erreur suivante, précédente |
:cl↵ :cf↵ | liste les erreurs, depuis un fichier |
^L ^G | ré-affiche l'écran, nom de fichier et position |
g^G | montre la position détaillée du curseur |
ga | montre la valeur ASCII du caractère |
gf | ouvre le fichier sous le curseur |
:redir>f↵ | redirige la sortie dans le fichier f |
:mkview [f] | sauve la config. [dans le fichier f] |
:loadview [f] | charge la config. [depuis le fichier f] |
^@ ^K ^_ \ Fn ^Fn | touches inusitées |
Copyright (C) 2005 by Laurent GRÉGOIRE
(<a href="mailto:laurent.gregoire@icam.fr">laurent.gregoire@icam.fr</a>)
Translated from English by Laurent Grégoire
Converted from vimqrc-fr.tex using a <a href="http://www.python.org">Python</a> script.
You can find the latest revision at
<a href="http://tnerual.eriogerg.free.fr">http://tnerual.eriogerg.free.fr</a>