Quelques liens :
http://www.vim.org/
http://vimdoc.sourceforge.net/htmldoc/help.html
http://www.linux-france.org/article/appli/vi/faq/vifaq.html

Lancer, quitter

Taper simplement vim <nom du fichier>.
Si <nom du fichier> n'existe pas, il est créé (mais pas sauvegardé).

Pour quitter sans sauvegarder, taper :q!

Pour quitter et sauvegarder : :wq!

Pour quitter et sauvegarder sous un autre (ou nouveau) nom : :wq!<nom_fichier>
Par exemple : :wq!unimarc.txt

Pour sauvegarder sans quitter : :w

Pour passer en mode insertion : i
Pour passer en mode Replace : R

Pour écrire à la place de caractères : s (voir ici)

Effacer

Pour effacer la ligne courante : dd

Pour effacer jusqu'à la fin de la ligne courante : d$

Pour effacer jusqu'à la fin du fichier : dG

Pour effacer jusqu'au début du fichier : dgg

Couper, coller

Pour couper une ligne entière, la commande est "*dd
Pour coller la ligne ailleurs : "*p

Copier, coller

Sélectionner le texte à la souris, faire Ctrl + C, puis déplacer le curseur et faire un clic droit.

Autre solution : yw pour copier un mot, p pour coller.
Si on tape yW, on copie les caractères des entités html.

Pour copier une ligne : Y (y majuscule). Pour coller : p.

Pour copier plusieurs lignes : taper ma au début (on insère une marque a), puis aller à la fin et taper y'a (je copie depuis a jusqu'au curseur). Pour coller : p. on peut aussi coller avec P : ça copie juste où se trouve le curseur.

Se déplacer

1G ou gg
Pour aller au début du fichier

G
Pour aller à la fin du fichier

3G
Pour aller à la ligne 3

^ ou 0 (sur le clavier, pas sur le pavé)
Pour aller au début de la ligne

$
Pour aller à la fin de la ligne

Chercher

Taper /<texte à chercher>
Pour continuer la recherche vers le bas, taper n, et vers le haut N

Remplacer

Taper :%s/<texte à chercher>/<texte qui remplacera>/

Le % indique que la substitution doit avoir lieu dans tout le fichier.

On peut utiliser des expressiosn régulières :
:%s/^\s*\n// : détruire les lignes vides remplies d'espaces.

Pour remplacer toutes les occurrences, ajouter un g comme en Perl : :%s/.asp/.php/g (remplace partout .asp par .php)

Annuler (undo)

Taper simplement u pour annuler la dernière modification d'un fichier.

Les swap files

Quand on est en train d'éditer un fichier, et que l'ordinateur s'arrête, un swap file est créé dans le même répertoire que le fichier. C'est un fichier dont l'extension est .swp. Pour s'en débarrasser, faire ls -a (affiche les fichiers cachés) et détruire en mettant bien le point initial.

Passer de dos à unix

Taper : :set ff=unix

Ouvrir plusieurs fichiers en même temps

Taper : vi <fichier1> <fichier2> <fichier3>

Le fichier affiché alors est le <fichier1>. Pour afficher le suivant : :n (sans sauvegarder : :n!)
Pour revenir au précédent : :N

On peut aussi ouvrir un seul fichier : vi <fichier1>
Puis, pour passer au <fichier2>, taper : :e <fichier2> (ce qui suppose qu'on connaisse le nom du deuxième fichier). Si on tape un nom de fichier qui n'existe pas, vi en crée un nouveau.
Et on peut même revenir au <fichier1> avec la commande : :e #

Afficher le nom du fichier en cours

Taper ctrl+g : affiche le nom du fichier
Taper 0 puis ctrl+g : affiche le chemin et le nom du fichier

Insérer le résultat d'une commande

Si on tape :r! <commande>, on lance la <commande> sous unix, mais on récupère le résultat dans le fichier texte !
Par exemple : :r! netstat

On peut aussi insérer le contenu d'un fichier entier avec la simple commande : :r! <fichier>

Afficher le numéro des chaque ligne

Taper : :set number

Pour cacher les numéros, taper : :set nonumber

Mettre plusieurs ligne en commentaire (Perl)

Par exemple, pour mettre en commentaire les lignes 104, 105 et 106, taper : :104,106! sed -e "s/^/\#/"

Pour enlever les commentaires : :104,106! sed -e "s/^\#//"

Afficher les octets

Pour utiliser vi comme ├ęditeur hexadécimal : :%!xxd