éditeur vi

Tutoriel= commande vimtutor

Déplacement

flèches
Flèches ou HJKL (J ressemble à une flèche vers le bas)
Ctrl-G
Affiche position
w ou e
mot par mot (début ou fin)
0 ou ^
début ligne
$
fin ligne
G et gg
(go) début et fin du fichier (si précédé nombre=aller à ligne)
:12
Aller ligne 12
souris
voir paramétrage

Sauver et quitter

:q!
force à quitter sans sauver
:wq
Sauve et quitte
:w lisezmoi.txt
Sauve le fichier sous le nom défini
:e lisezmoi.txt
Ouvre fichier.
v [déplacement] :w extrait.txt
Sauve les lignes sélectionnées
1,10:w chapitre1.txt
Sauve les dix premières lignes sous le nom défini
r fichier.txt
Insère fichier.txt au niveau du curseur
r !ls
Insère résultat d'une commande au niveau du curseur

Edition

En mode "Normal"
i
Passe en mode "insertion" (faire insertion puis "esc" pour revenir au mode "normal")
a
idem i (après curseur)
R
idem i (mode OVERWRITE)
r
remplace un seul caractère puis repasse en mode normal
o
Passe en mode "insertion" sur nouvelle ligne (open)

Effacements

x
Efface un caractère
dw
Efface un mot (yc espace)
de
Efface un mot (sans l'espace qui suit)
dd
Efface une ligne
d0
Efface du début de la ligne jusqu'au curseur
d$
Efface du curseur à la fin de la ligne
J
Joint la ligne suivante (supprime le CRLF)
On peut faire précéder d'un nombre qui dit combien ont doit effacer.

10dw : efface dix mots

Si on utilise "c" (change) au lieu de "d" (delete) on passe en mode insertion dans la foulée.

Annuler

u
Undo, annule modification
Ctrl-r
Redo refait chose annulée
U
annule modifs faites sur toute la ligne (Toggle)

Copier coller

Quand on "efface" avec "d" en fait on fait un "couper".
v
Permet de sélectionner du texte (utile aussi pour enregistrer extrait)
ctrl-v
column select
y
copie texte surligné
Y ou yy
copie ligne courante
10Y
copie ligne courante + 9 suivantes
p
Paste. Colle (attention: après ligne courante).
P
Paste. Colle (fonctionnement usuel: avant ligne courante).
"+lettre+commande
utilise un registre (presse-papier multiple)
"+ maj-lettre +d ou y
ajoute au registre ce qu'on coupe ou copie (presse-papier multiple)
"+
le signe "+" identifie le presse-papier standard de l'OS
"+Y
Copier ligne courante (dans le presse-papier standard de l'OS)
"+P
Coller (le presse-papier standard de l'OS)
:reg
permet de voir contenu registres

Recherche

#
cherche mot courant
*
cherche mot courant vers arrière
%
),] ou } correspondant
/texte
recherche de texte vers le bas
?texte
recherche de texte vers le haut
n
Occurence suivante (next)
N
Occurence précédente
:%s/ancien/nouveau/gc
remplacer 'ancien' par 'nouveau' dans tout le texte ("%": tout le fichier; "g":toutes occurences; "c": confirmer avec y ou n)
:%s/ancien/nouveau/g
remplacer 'ancien' par 'nouveau' dans tout le texte
:s/ancien/nouveau
remplacer la première occurence de 'ancien' par 'nouveau' sur la ligne courante
:s/ancien/nouveau/g
remplacer 'ancien' par 'nouveau' sur la ligne courante
:1,10s/ancien/nouveau/g
remplacer 'ancien' par 'nouveau' sur les lignes 1 à 10

Multi fichier

:sp fichier2.txt
Ouvre nouveau fichier dans sous cadre.
:vsp fichier2.txt
idem mais avec split vertical
ctrl-w ctrl-w (window)
On bascule d'un cadre à l'autre
ctrl-w + flèche
Basculement fin quand plusieurs cadres
ctrl-w + +/-/=
Permet de régler taille du cadre
:qa, :qa! ou :wqa
quitter tout

Astuces

~
Change la casse de la sélection
m+lettre
pose un flag
`a
va au flag identifié par "a"
'a
va à la ligne du flag identifié par "a"
:marks
liste les flags
`.
flag par défaut: dernière modif
''
flag par défaut: dernière position avant saut
.
Répête la dernière commande
>>
augmente l'indentation de la ligne courante.
commenter un bloc
sélectionner colonne, maj-i, //

Options

:set all
Liste valeurs options
:set
Liste valeurs options modifiées
:set mouse=a
autorise la souris pour se déplacer (maintenir "majuscule" pour utiliser le copier-coller du xterm)
:set mouse&
annule la reconnaissance souris
:set ic
recherche ignore casse
:set hls is
surlignage de tous les résultats
:set nohls
fin surlignage
:set nobomb
pas de BOM dans fichiers UTF-8
:syntax enable
Coloration syntaxique

Encodage

Pour recharger un fichier en utf-8 (dans lequel on voit des é):
:e! ++enc=utf8
Pour convertir en utf-8 un fichier sur lequel on travaille :
:set fileencoding=utf8
:set bomb
La seconde commande ajoute le BOM On peut ajouter ça dans le .vimrc pour que ce soit le réglage par défaut.

Aide

vimtutor fr
Tutorial
F1 ou :help
aide en ligne
:q
quitter l'aide en ligne
A essayer: :help w :help c_<T :help insert-index :help user-manual

Paramétrage

Support pavé numérique:
sous putty, dans la section [Terminal -> Features], il faut cocher la case Disable application keypad mode;
Créer un fichier de config:
:edit ~/.vimrc pour Unix
:edit $VIM/_vimrc pour MS-Windows
Charger un fichier modèle
:r $VIMRUNTIME/vimrc_example.vim
(support souris, coloration syntaxique, surlignage recherches,..)

Astuces

:!ls
Permet exécution d'une commande de l'OS