Vi memento

Déplacement écran

h
déplacer le curseur vers la gauche
j
déplacer le curseur vers le bas
k
déplacer le curseur vers le haut
l
déplacer le curseur vers la droite
Ctrl+f
déplacer d'une page vers le bas
Ctrl+b
déplacer d'une page vers le haut
Ctrl+d
déplacer d'une demi-page vers le bas
Ctrl+u
déplacer d'une demi-page vers le haut
Ctrl+y
scroller vers le bas sans bouger le curseur
Ctrl+e
scroller vers le haut sans bouger le curseur
H
placer le curseur en haut de l'écran
M
placer le curseur en milieu de l'écran
L
placer le curseur en bas de l'écran
zt
scroller et placer la ligne en haut de l'écran
z.
scroller et placer la ligne en milieu de l'écran
zb
scroller et placer la ligne en bas de l'écran
gg / 1G
déplacer en début de fichier
{n}G / :{n}
déplacer à la ligne n
G
déplacer en fin de fichier
Ctrl+o
remonter l'historique des sauts
Ctrl+i
redescendre l'historique des sauts

Déplacement ligne

<RETURN>
déplacer au début de la ligne suivante
<ESPACE>
déplacer vers la droite
<BACKSPACE>
déplacer vers la gauche
0
déplacer au début de ligne
^
déplacer au premier mot de la ligne
$
déplacer au fin de ligne
gm
déplacer en milieu de ligne
gM
déplacer en milieu de phrase
w
déplacer d'un mot vers l'avant
W
déplacer d'un mot vers l'avant (après espace)
b
déplacer d'un mot vers l'arrière
B
déplacer d'un mot vers l'arrière (après espace)
e
déplacer à la fin du mot vers l'avant
E
déplacer à la fin du mot vers l'avant (après espace)
ge
déplacer à la fin du mot vers l'arrière
gE
déplacer à la fin du mot vers l'arrière (après espace)
f{char}
déplacer au prochain caractère {char}
F{char}
déplacer au précédent caractère {char}
t{char}
déplacer au prochain caractère {char} avant
T{char}
déplacer au précédent caractère {char} avant
;
répéter l'opération précédente
,
répéter en sens inverse
%
déplacer vers la parenthèse, crochet, accolade correspondante
)
déplacer au début de la phrase suivante (point)
(
déplacer au début de la phrase précédente (point)

Insertion

i
insérer avant le curseur
I
insérer en début de ligne avant le premier de mot
gI / 0i
insérer en début de ligne
a
insérer après le curseur
A
insérer en fin de ligne
o
insérer après la ligne
O
insérer avant la ligne
ea
insérer en fin de mot
<ESC>
sortir du mode insertion

Suppression (couper)

dd
supprimer la ligne
{n}dd / d{n}d
supprimer {n} lignes
:{n},{m} d
supprimer les lignes spécifiés
0D
supprimer le contenu de la ligne
dw
supprimer le mot
d$ / D
supprimer jusqu'à la fin de la ligne
d^
supprimer jusqu'au début de la ligne
x
supprimer le caractère suivant
X
supprimer le caractère précédent
:%d
supprimer tout le fichier
dG
supprimer la fin du fichier
dgg / d1G
supprimer le début du fichier
:g/^$/d
supprimer les lignes vides

Edition

r
remplacer un caractère
R
remplacer
cc / 0C
remplacer la ligne (supprimer et insérer)
cw
supprimer le mot et insérer
c$ / C
remplacer jusqu'à la fin de ligne
c^
remplacer depuis le début de ligne
s
effacer le caractère et insérer
J
joindre 2 lignes
gJ
joindre 2 lignes sans espace
r<RETURN>
couper une ligne sur un espace
xp
intervertir 2 caractères
~
inverser la casse

Copier / Coller

yy / Y
copier la ligne
{n}yy
copier {n} lignes
:{n},{m} y
copier les lignes spécifiées
yw / yaw
copier le mot avec espace de fin
yiw
copier le mot sans espace de fin
y$
copier la fin de la ligne
y^
copier depuis le début de la ligne
:%y
copier tout le fichier
p
coller la sélection après
P
coller la sélection avant
:{n},{m} copy {l}
copier les lignes {n} à {m} sous {l}
:{n},{m} move {l}
déplacer les lignes {n} à {m} sous {l}

Mode Visuel

v
sélectionner les caractères
V
sélectionner les lignes
Ctrl+v
sélectionner le bloc de caractères
y
copier la sélection
d
couper la sélection
c
remplacer la sélection
I
insérer en début du bloc (commentaire)
>>
indenter les lignes
<<
désindenter les lignes
.
répéter
o
alterner début fin
aw
sélectionner le mot
u
mettre en minuscule
U
mettre en majuscule

Recherche

*
chercher le prochain mot identique
#
chercher le précédent mot identique
/{motif}
chercher le prochain motif
?{motif}
chercher le précédent motif
n
chercher dans la même direction
N
chercher dans la direction inverse
:noh
supprimer le highlight

Remplacement

:s/old/new
remplacer la première occurence de la ligne
:s/old/new/g
remplacer toutes les occurences de la ligne
:%s/old/new/g
remplacer toutes les occurences du fichier
:%s/old/new/gc
remplacer avec confirmation

Annulation

u
annuler la dernière action
{n}u
annuler les {n} dernières actions
U
annuler les modifications de la ligne
:u
annuler la dernière commande
Ctrl+r
refaire

Sauvegarde

:w
sauvegarder le fichier
:w nom.txt
sauvegarder le fichier sous le nom nom.txt et rester sur le courant
:sav nom.txt
sauvegarder le fichier sous le nom nom.txt et éditer le nouveau
:{n},{m} w nom.txt
sauvegarder les lignes {n} à {m} dans le fichier nom.txt
:wq / ZZ / :x
sauvegarder et quitter
:q
quitter
:q! / ZQ / :qa!
quitter sans sauvegarder
:e!
recharger le fichier
Ctrl+z
suspendre l'édition (tapez fg pour revenir dans vi)
:r nom.txt
insérer le fichier nom.txt après le curseur
:{n} r nom.txt
insérer le fichier nom.txt après la ligne {n}
:!commande
exécuter la commande
:r !commande
insérer la commande
:bd
fermer le buffer sans quitter vi
:w !sudo tee %
sauvegarder en tant que root

Ligne de commande

:.
ligne courante
:1,.
du début à la ligne courante
:.,$
de la ligne courante à la fin
:1,$
tout le fichier
:%
tout le fichier
:se nu
activer les numéros de ligne
:se nonu / :se nu!
désactiver les numéros de ligne
:se ic
recherche insensible à la casse
:se noic / :se ic!
recherche sensible à la casse

Marqueur

m[a-z]
marquer une position dans le fichier courant
m[A-Z]
marquer une position parmi tous les fichiers ouverts
'[a-z]
revenir à un marqueur (premier mot)
`[a-z]
revenir à un marqueur (ligne et colonne)
d'[a-z]
supprimer jusqu'au marqueur
c'[a-z]
remplacer jusqu'au marqueur
y'[a-z]
copier jusqu'au marqueur
:marks
lister toutes les marqueurs
:marks ab
lister les marqueurs a et b
'0
revenir à la position lors de la précédente fermeture
'{n}
revenir à la position lors de la {n}ème précédente fermeture
''
revenir à la position avant le saut vers le marqueur

Multi-document

:e nom_fichier.txt
ouvrir un fichier dans un nouveau buffer
:enew
ouvrir un nouveau buffer vide
:ls
lister les buffers
:b{n}
aller au buffer numéro {n}
:bd
fermer le buffer courant
:{n}bd
fermer le buffer numéro {n}
:bfirst
aller au premier buffer
:blast
aller au dernier buffer
:bn
aller au buffer suivant
:bp
aller au buffer précédent
Ctrl+6
alerterner les buffers

Multi-window

Ctrl+w Ctrl+s / :sp
split horizontal
Ctrl+w Ctrl+s / :vsp
split vertical
Ctrl+w Ctrl+w
aller à la fenêtre suivante
Ctrl+w Ctrl+q
fermer la fenêtre courante
Ctrl+w Ctrl+o
fermer toutes les fenêtres sauf la fenêtre courante

.exrc

  "Commentaire
  set title "Set the window’s title to the file currently being edited
  set number "Show line numbers on the sidebar.
  set list "Show invisible characters
  set cursorline "Highlight the line currently under cursor
  set ruler "Always show cursor position
  set hlsearch "Enable search highlighting
  set ignorecase "Ignore case when searching
  set incsearch "Incremental search that shows partial matches
  set tabstop=4 "Indent using four spaces
  set expandtab "Convert tabs to spaces
  set shiftwidth=4 "Round the indentation
  set smarttab "Insert “tabstop” of spaces when the “tab” key is pressed