Découverte de l'éditeur VIM

Objectifs
L'objectif de ce TP est de voir comment utiliser l'éditeur VIM pour programmer en C. Cet éditeur sera utilisé par la suite dans le reste de votre cursus (en programmation avancée, systèmes, réseaux...).

Principe

Pour lancer l’éditeur, il suffit de taper vim dans un terminal. Contrairement aux éditeurs de texte habituels, vim dispose de 4 modes de fonctionnement: le mode interactif, le mode insertion, le mode visuel et le mode commande:

  • le mode interactif est le mode par défaut. C’est celui dans lequel vous vous trouvez quand vous lancez vim ou quand vous êtes dans un autre mode et que vous appuyez sur la touche ESC. Dans ce mode, vous pouvez faire des opérations de déplacement dans un fichier, de copier-coller, de suppression de texte, de remplacement de texte…
  • le mode visuel vous permet de sélectionner facilement des mots, lignes, blocs de texte et de faire des opérations dessus. Ce mode s’active à partir du mode interactif en appuyant sur v.
  • le mode insertion est le mode qui vous permet d’écrire du texte. À partir du mode interactif, il suffit d’appuyer sur la touche i pour passer en mode insertion.
  • le mode commande est le mode qui permet d’exécuter des commandes vim ou des commandes systèmes. À partir du mode interactif, il faut appuyer sur la touche : puis taper la commande que vous voulez exécuter.

Premières manipulations

  1. lancer vim dans un terminal
  2. appuyer sur i pour passer en mode insertion
  3. taper un programme C minimal
  4. pour enregistrer, taper sur ESC (pour quitter le mode insertion) puis taper :w test.c pour sauvegarder ce que vous avez écrit (: permet de passer en mode commande, w est la commande de sauvegarde / write et test.c est le nom du fichier)
  5. Toujours en mode interactif, déplacer vous le fichier avec les touches h (gauche), j (bas), k (haut), l (droite). Vous pouvez également utiliser les flèches du clavier.
  6. Pour quitter vim, il suffit de taper :q ou :q! si vous voulez forcer la fermeture (par défaut vim ne se termine pas s’il y a des modifications non enregistrées).

Il est possible de sauvegarder puis de quitter avec la commande :wq

Outre les touches h, j, k, l, d’autres sont utiles comme par exemple:

  • 0 qui permet de revenir automatiquement en début de la ligne courante
  • $ qui permet de revenir automatiquement en fin de la ligne courante
  • gg qui permet de revenir à la première ligne
  • G qui permet de revenir à la dernière ligne
  • xG ou x est un nombre permet d’aller à la ligne x

Couper / Supprimer

  • Pour supprimer un caractère, il faut taper x ou yxy est le nombre de caractères à supprimer
  • Pour supprimer une ligne, il faut taper dd ou xddx est le nombre de ligne à supprimer
  • Pour supprimer un mot, il faut taper dw (delete word) ou xdwx est le nombre de mot à supprimer
  • Pour supprimer du début de la ligne jusqu’au curseur, il faut taper d0
  • Pour supprimer du curseur jusqu’à la fin de la ligne, il faut taper d$

Copier

  • Même principe que pour couper, sauf que la commande est yy pour copier une ligne, yw pour copier un mot, y0 pour copier…

Coller

  • Pour coller du texte, il faut taper p ou xpx est le nombre de fois à copier. Attention la copie se fait immédiatement après où se fait le curseur, il n’y a pas de retour à la ligne.

Remplacer

  • Pour remplacer une lettre, il suffit de placer le curseur sur la ligne à remplacer et de taper rs ou s est la nouvelle lettre à insérer.
  • Pour remplacer du texte, il est possible d’utiliser la syntaxe :s/ancien/nouveau qui remplace la première occurrence d’ancien par nouveau, des variantes existent:
    • :s/ancien/nouveau/g: remplace toutes les occurrences de la ligne où se trouve le curseur
    • :#,#s/ancien/nouveau/g: remplace toutes les occurrences dans les lignes n° # à # du fichier
    • :%s/ancien/nouveau/g: remplace toutes les occurrences dans tout le fichier

Annuler des modifications

  • Pour annuler une modification, il faut taper u ou xux est le nombre de fois où il faut revenir en arrière

Recherche d’un mot

  • Pour chercher un mot après l’endroit où se trouve le curseur, il faut taper /mot. Pour aller à l’occurrence suivante, taper n ou N pour l’occurence précédente
  • Pour chercher un mot avant l’endroit où se trouve le curseur, il faut taper ?mot, le reste est identique

Lancer une commande externe

  • Pour cela il suffit de taper le nom de la commande en la précédant de :! comme par exemple :!ls pour afficher le contenu du répertoire courant

Ouvrir un autre fichier

  • Dans vim il suffit de taper :e nom_fichier pour ouvrir le fichier qui se nomme nom_fichier. Vous pouvez ensuite naviguer entre fichiers avec :e #xx désigne le numéro de fichier.

Le fichier de configuration

Il existe plein d’options dans vim qui permettent de rendre son utilisation plus agréable (coloration syntaxique, numéro de ligne, alias…). En voici quelques unes que vous pouvez écrire dans une fichier .vimrc que vous mettrez à la racine de votre répertoire personnel (ça vous éviter d’activer les options à chaque ouverture).

set nocp
syn on
set syntax =on
filetype indent plugin on
set nu
set showmatch
set tabstop =4
set shiftwidth =4
set softtabstop =4
set expandtab
set spellsuggest =5
set cursorline
  • set nocp desactive le mode compatibilité
  • syn on active la coloration syntaxique
  • set syntax =on active la coloration syntaxique
  • filetype indent plugin on indentation suivant le type de fichier
  • set nu affiche le numéro de ligne
  • set showmatch affiche les accolades / parenthèses manquantes
  • set tabstop =4 taille en espaces des tabulation
  • set shiftwidth =4 taille en espaces des tabulation
  • set softtabstop =4 taille en espaces des tabulation
  • set expandtab transforme les tabulations en espace
  • set cursorline met en évidence la ligne où se trouve le curseur
  • iab #i #include exemple d’alias, il suffit maintenant de taper #i puis tabulation pour que cela soit remplacé par #include