Aller au menu - Aller au contenu

Icône Vim : l'éditeur de texte du programmeur

Mise à jour : 20/11/2011
Difficulté : Difficile Difficile Creative Commons BY-NC-SA
73 501 visites depuis 7 jours , dont 1 339 sur ce chapitre , classé 6/777
Dans cette dernière partie, nous allons réunir toutes les connaissances que nous avons acquises sur les commandes utilisées sur Linux. Nous allons les combiner entre elles et créer ce que l'on appelle des scripts shell.

Le scripting shell est un mini-langage de programmation intégré à tous les systèmes Linux qui vous permet d'automatiser des tâches répétitives. Il s'agit d'un élément très puissant du système que vous devez absolument connaître.

Toutefois, pour programmer, il va vous falloir utiliser un éditeur de texte digne de ce nom. Certes, vous connaissez déjà Nano, mais comme je vous l'ai déjà dit il est très basique. On l'a utilisé pour simplifier les choses au début, mais maintenant il est temps de passer à quelque chose de plus complet et de plus puissant : Vim (prononcez "Vi aille ème").
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Installer Vim

Sous Linux, il y a 2 éditeurs de texte puissants en console à connaître :

  • Vim : il s'agit d'une version améliorée d'un des plus anciens éditeurs en console, qui s'appellait "Vi" (prononcez les lettres en anglais "vi aille").
    Vim (VI iMproved, version améliorée de Vi) est largement répandu et généralement disponible par défaut sur la plupart des OS basés sur Unix, comme Linux.
  • Emacs : développé par Richard Stallman, le fondateur du projet GNU dont je vous ai parlé au début du cours, cet éditeur concurrent a lui aussi bien des atouts. On le retrouve plus spécifiquement sous Linux et il est rarement installé par défaut (un petit apt-get suffit toutefois ;) ). Il peut être complété par toute une série de plugins qui lui permettent de faire navigateur web, lecteur audio... Bref, c'est un peu un outil à tout faire.


Sachez qu'il est courant que les gens adoptent l'un ou l'autre de ces éditeurs et le défendent bec et ongles. Choisir un éditeur de texte sous Linux, c'est en fait un peu comme choisir une religion. Oui je sais, ils sont fous ces Linuxiens !

Oulah, c'est important alors ! Lequel choisir ?


En fait, rien ne vous empêche d'apprendre à utiliser les deux. Toutefois, ces logiciels sont tellement complets qu'il vous faudra du temps pour vous habituer à chacun d'eux.
Dans la pratique, on prend l'habitude d'en choisir un et de s'y tenir : il est donc rare de voir quelqu'un naviguer entre les deux.


Vim ou Emacs ? Emacs ou Vim ?



Tout cela ne répond pas à votre question, je sais. Mais ne comptez pas sur moi pour vous dire "Utilisez celui-là, il est mieux" : des milliers de trolleurs le font mieux que moi sur tous les forums du monde. Et je pourrais m'attirer les foudres divines des adorateurs de l'un ou l'autre éditeur si je m'y risquais. :-°

D'ailleurs, vous devriez vous mettre en tête dès maintenant qu'il n'y en a pas un qui soit nul et l'autre génial. Ce sont juste 2 conceptions un peu différentes de ce que doit être un éditeur de texte.

Le meilleur conseil que je puisse vous donner est le suivant : choisissez d'utiliser le même éditeur que votre ami pro de Linux ou votre collègue de bureau. L'idéal est d'avoir quelqu'un à proximité qui peut régulièrement vous conseiller. Croyez-moi, s'il y a bien un conseil qui soit important dans ce chapitre, c'est celui-là.


Et toi, ton éditeur c'est quoi ?


Je craignais cette question mais il fallait bien qu'elle tombe un jour... :D
Pour ma part, je n'ai jamais eu l'occasion de prendre le temps d'apprendre à utiliser Emacs. Le professeur qui m'a initié à Linux était un habitué de Vim (mais il n'a jamais dit de mal d'Emacs, je le jure, je le jure !).

Je suis donc à mon tour un habitué de Vim, et c'est lui que je vous présenterai dans ce cours. Je ne suis toutefois pas sectaire, si quelqu'un rédige un bon tutoriel sur Emacs sur le Site du Zéro, je serai ravi de vous inviter à le lire lui aussi. ;)


Installer et lancer Vim



Sur la plupart des distributions Linux, Vim est en général installé par défaut. Mais j'ai bien dit en général. Rien n'assure que Vim soit installé chez vous par défaut. Après tout, c'est la distribution qui choisit les programmes qu'elle vous installe au départ.

D'ailleurs, sous Ubuntu, il faut savoir que ce n'est pas Vim qui est installé mais Vim-tiny, une version allégée de Vim. Personnellement elle ne me convient pas et est limitée en possibilités. Je vous invite donc à installer le vrai Vim complet en tapant :

Code : Console
sudo apt-get install vim


Vous pourrez alors lancer Vim en tapant la commande vim (la commande vi fonctionne aussi mais il est recommandé de taper plutôt vim).


vimtutor : le programme qui vous apprend à utiliser Vim !



Il existe un véritable petit tutoriel intégré à Vim pour les nouveaux ! :)
Ce programme peut être lancé en tapant :

Code : Console
vimtutor


Si vous ne l'avez pas, installez le paquet vim-common. Mais normalement il devrait déjà être installé.

En fait, vimtutor lance simplement Vim en ouvrant un fichier d'aide prédéfini. Cette introduction à Vim est d'ailleurs en français et est accessible à tout le monde, aussi je vous invite à l'essayer et à la lire en complément de mon cours à moi. ;)

Petit aperçu :

Code : Console
===============================================================================
= B i e n v e n u e  dans le  T u t o r i e l  de  V I M  -  Version 1.5.fr.2 =
===============================================================================

     Vim est un éditeur très puissant qui a trop de commandes pour pouvoir
     toutes les expliquer dans un cours comme celui-ci, qui est conçu pour en
     décrire suffisamment afin de vous permettre d'utiliser simplement Vim.

     Le temps requis pour suivre ce cours est d'environ 25 à 30 minutes, selon
     le temps que vous passerez à expérimenter.  Les commandes utilisées dans
     les leçons modifieront le texte. Faites une copie de ce fichier afin de
     vous entraîner dessus (si vous avez lancé "vimtutor" ceci est déjà une
     copie).

     Il est important de garder en tête que ce cours est conçu pour apprendre
     par la pratique.  Cela signifie que vous devez exécuter les commandes
     pour les apprendre correctement.  Si vous vous contentez de lire le
     texte, vous oublierez les commandes !

     Maintenant, vérifiez que votre clavier n'est PAS verouillé en majuscules,
     et appuyez la touche  j  le nombre de fois suffisant pour que la leçon
     1.1 remplisse complètement l'écran.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Il faut compter en général une bonne demi-heure pour faire le Vimtutor. Cela vous fait une bonne petite introduction à Vim, mais gardez bien entendu à l'esprit que les possibilités sont bien plus larges et que vous n'aurez pas tout vu à la fin de sa lecture.

Les modes d'édition de Vim

Commencez par lancer Vim. Comme je vous l'ai dit plus tôt, il suffit de taper la commande :

Code : Console
vim


Vim s'ouvre alors :

Vim
On a connu plus sexy, mais bon, c'est un éditeur de texte après tout


Vim est un programme un peu surprenant qui ne s'utilise pas comme la plupart des éditeurs de texte que vous connaissez. Il m'a fallu un peu de temps pour m'y habituer et il vous en faudra aussi, mais le jeu en vaut la chandelle.

Si on ne vous explique rien, vous risquez d'être un peu perdus. Pire, vous aurez même du mal à sortir de Vim (ne rigolez pas, ça m'est arrivé la première fois !).

Voilà ce qu'il faut savoir... et qu'on aurait dû m'expliquer dès le départ d'ailleurs. Vim possède 3 modes de travail différents :

  • Mode interactif : c'est le mode par défaut par lequel vous commencez. En lançant Vim, vous êtes donc en mode interactif.
    Dans ce mode, vous ne pouvez pas écrire de texte (oui je sais, c'est le comble pour un éditeur de texte !). N'essayez donc pas d'appuyer sur des lettres au hasard, car vous risquez de faire n'importe quoi !
    Le mode interactif est un mode puissant qui permet de se déplacer dans le texte, supprimer une ligne, copier/coller du texte, aller à une ligne précise, annuler ses actions, etc. Chaque action peut être déclenchée en appuyant sur une touche du clavier (par exemple, on appuie sur "u" pour annuler la dernière action).
  • Mode insertion : ça c'est le mode que vous connaissez ! Vous tapez du texte, et il s'insère à l'endroit où le curseur se trouve. Magique !
    Pour rentrer dans ce mode, il y a plusieurs possibilités. Une des plus courantes est d'appuyer sur la touche "i" (insertion). Pour en sortir, il faut appuyer sur la touche "Echap".
  • Mode commande : ce mode permet de lancer des commandes telles que "quitter", "enregistrer", etc. Vous pouvez aussi l'utiliser pour activer des options de Vim (comme la coloration syntaxique, l'affichage du numéro des lignes...), et vous pouvez même envoyer des commandes au shell (à la console) telles que ls, locate, cp, etc.
    Pour activer ce mode, vous devez être en mode interactif et appuyer sur la touche deux-points ":". Vous validez la commande avec la touche Entrée et revenez alors au mode interactif.


Je résume. Vim possède 3 modes : interactif, insertion et commande. Vous démarrez en mode interactif. Le seul mode que vous connaissez et qui ne sera pas nouveau pour vous est le mode insertion. Les 2 autres modes (interactif et commande) vont vous surprendre un peu.

Modes de Vim


Pourquoi avoir fait autant de modes qui ont l'air si compliqués dans un éditeur de texte ? Pourquoi n'y a-t-il pas de menus ? Et pourquoi ne pas utiliser plutôt un éditeur de texte graphique, c'est quand même plus simple avec une souris !


Trop de questions à la fois. :D

Je vais essayer de vous répondre simplement, et il va falloir me croire sur parole au début : si des gens se sont amusés à créer tous ces "modes" et tous ces raccourcis clavier, ce n'est pas juste pour le plaisir torturé de faire la même chose qu'avec une souris et des menus mais avec un clavier.

En fait, vous allez vite découvrir que vous pouvez faire des choses que vous ne soupçonniez pas avec un éditeur de texte : supprimer le mot actuel, couper le texte du curseur jusqu'à la fin de la ligne, coller 4 fois le texte qui se trouve dans le presse-papiers, sauter à la ligne n°453, sauter à la dernière ligne, etc.

Toutes ces choses-là se font au clavier et, pour la plupart d'entre elles, vous devrez retenir par coeur quelle touche correspond à quelle action. C'est un peu contraignant au départ, mais imaginez que c'est comme apprendre à taper à 10 doigts au clavier comme un dactylo : au début, c'est dur, vous avez l'impression de ramer, d'aller moins vite qu'avant, mais petit à petit vous gagnez en productivité, vous allez de plus en plus vite, et finalement vous vous demandez comment vous avez pu faire autant de temps sans connaître tout ça. ;)

gVim
gVim sous Vista
Et pour ceux qui voudraient une interface graphique, sachez que Vim a été porté sous Gnome sous le nom gVim. Vous pouvez donc l'installer (même si vous utilisez KDE hein) et le lancer, le fonctionnement est identique au Vim de la console. Il est même disponible en version Windows, si c'est pas beau ça !
Cette fenêtre affiche par défaut des menus et une barre d'outils, comme un éditeur de texte classique. Un habitué du Vim console aura plutôt tendance à utiliser les raccourcis clavier qui vont plus vite, bien entendu.




Opérations basiques (déplacement, écriture, enregistrement...)

Nous allons découvrir Vim à travers plusieurs étapes de plus en plus complexes. Nous commençons en douceur. :)


L'ouverture de Vim



Pour le moment, si vous lancez Vim en tapant juste la commande sans paramètre :

Code : Console
vim


... il s'ouvre sur un nouveau fichier vide comme ceci que vous avez déjà vu :

Vim
(le texte d'introduction que vous voyez disparaîtra dès que vous écrirez les premiers caractères)




Vous pouvez aussi ouvrir un fichier en rajoutant son nom en paramètre :

Code : Console
vim nomdufichier


Si le fichier n'existe pas, il sera créé.


i : insérer du texte



Nous allons partir sur un fichier vide. Nous souhaitons commencer à rentrer du texte (quoi de plus normal pour un éditeur de texte après tout ?).

Appuyez sur "i" (i minuscule). Vous basculez alors en mode insertion. Vous pouvez maintenant taper du texte :

Insertion de texte


Notez le message -- INSERT -- en bas de l'écran qui vous confirme que vous êtes en mode insertion.

Ecrivez quelques lignes comme moi, puis appuyez sur la touche Echap pour revenir au mode interactif (le mode normal dans lequel vous êtiez au départ). Le message -- INSERT -- disparaît, et vous revoilà en mode interactif. :)


Le déplacement



h, j, k, l : se déplacer dans tous les sens



En mode interactif, vous pouvez déplacer le curseur au sein du texte. Pour cela, on utilise les touches :

  • h : aller à gauche.
  • j : aller en bas.
  • k : aller en haut.
  • l : aller à droite.


En image :

Flèches Vim


QUOIII ? C'est le comble ! On ne peut même pas utiliser les flèches du clavier pour se déplacer ?! :o


Si si, vous pouvez aussi les utiliser. Essayez, elles marchent. D'ailleurs, en mode insertion, c'est la seule chose qui marche.


0 et $ : se déplacer en début et fin de ligne



Pour placer le curseur au tout début de la ligne, appuyez sur 0 en mode interactif.
La touche "Origine" que vous avez peut-être l'habitude d'utiliser fonctionne aussi. Cependant, retenez plutôt qu'il faut utiliser 0, ça vous sera utile par la suite.

De même, pour aller en fin de ligne, appuyez sur la touche $.
Là encore, la touche "Fin" fonctionne aussi, mais essayez de prendre l'habitude d'utiliser $, ça sera payant vous allez voir. :)


w : se déplacer de mot en mot



Avec w, vous pouvez vous déplacer de mot en mot dans le fichier. C'est un autre moyen, parfois plus efficace et plus rapide, pour se déplacer au sein d'une ligne du fichier.


:w : enregistrer le fichier



Pour enregistrer votre fichier, vous devez être au préalable en mode interactif (appuyez sur Echap pour vous en assurer).

Appuyez ensuite sur la touche deux-points (:) pour passer en mode commande, puis tapez w (write) suivi du nom du fichier. La commande doit s'afficher en bas.

Enregistrement dans Vim


Dans mon cas, j'ai donc tapé :w monfichier (notez que j'aurais aussi bien pu donner une extension .txt à mon fichier). Appuyez ensuite sur la touche Entrée pour valider. Le bas de l'écran doit indiquer que le fichier a été écrit (written) :

Code : Console
"monfichier" [New] 4L, 185C written                           4,101-98      All


:q : quitter



Maintenant que vous avez enregistré, vous pouvez quitter Vim en tapant :q

J'ai essayé de quitter en ayant fait des modifications après avoir enregistré, et un message d'erreur s'affiche en rouge : "No write since last change".


Vim vous interdit de quitter si vous n'avez pas enregistré vos changements. Vous pouvez toutefois forcer la fermeture de Vim en ajoutant un point d'exclamation à la fin : :q!. Cette fois, il n'y aura pas d'erreur.


:wq : enregistrer puis quitter



C'est la combinaison des 2 commandes que nous venons de voir. Vous enregistrez et quittez immédiatement Vim lorsque vous tapez :wq.

Opérations standard (copier, coller, annuler...)

Nous avons vu le strict minimum qu'il faut connaître pour se débrouiller dans Vim. Si ce n'est pas difficile, il faut bien avouer que c'est perturbant. Prenez donc le temps de vous y habituer.

Nous allons aller un peu plus loin ici, et c'est maintenant que vous allez commencer à trouver Vim pratique (et parfois même étonnant). Nous allons faire la majorité de ces actions en mode interactif : appuyez sur la touche Echap si vous n'y êtes pas déjà.

x : effacer des lettres



Placez le curseur sur une lettre en mode interactif, puis appuyez sur x pour l'effacer.
Cela revient à appuyer sur "Suppr" en mode insertion.

On peut aller plus loin et effacer plusieurs lettres d'un coup. Pour cela, utilisez la formule suivante :

(nombre)x


Par exemple, si vous tapez 4x (4 puis x), vous supprimerez les 4 prochaines lettres en partant du curseur.

Vous devez taper 4 puis x. Ne vous étonnez pas si rien ne s'affiche à l'écran lorsque vous avez tapé 4, c'est normal. Ecrivez la commande jusqu'au bout, cela fonctionnera.



d : effacer des mots, lignes...



De la même manière, on utilise aussi la touche d pour supprimer des mots et des lignes.

Commençons par supprimer une ou plusieurs lignes.


dd : supprimer une ligne



Appuyez 2 fois sur d (dd) pour supprimer toute la ligne sur laquelle se trouve le curseur.

Mieux : vous pouvez faire précéder cette instruction d'un nombre de lignes à supprimer. Par exemple, si vous tapez 2dd, vous supprimerez 2 lignes d'un coup.

Encore une fois, ne vous étonnez pas si, juste après avoir tapé "2", rien ne s'affiche à l'écran. L'information est enregistrée par Vim en mémoire mais l'action ne sera vraiment exécutée que lorsque vous aurez tapé entièrement "2dd".


Note importante : la ligne ainsi supprimée est en fait "coupée" et placée en mémoire. Elle peut être collée, comme on le verra plus loin, avec la touche p.

dw : supprimer un mot



Placez le curseur sur la première lettre d'un mot. Tapez ensuite dw (delete word) : cela supprime le mot en entier !
Si le curseur est positionné au milieu du mot, vous ne supprimerez que les prochains caractères du mot (jusqu'à l'espace qui suit).

Vous pouvez aussi supprimer les 3 prochains mots en tapant 3dw. Notez que le 3 peut être placé entre le d et le w, cela revient au même : d3w (ce qui peut se lire "delete 3 words").


d0 et d$ : supprimer le début ou la fin de la ligne



Vous vous souvenez de 0 et $ ? Je vous avais demandé de les utiliser à la place des touches "Origine" et "Fin" car on allait en avoir besoin à nouveau par la suite. Le moment est venu de s'en resservir. :)

  • En tapant d0, vous supprimez du curseur jusqu'au début de la ligne.
  • En tapant d$, vous supprimez du curseur jusqu'à la fin de la ligne.


Pratique !


yy : copier une ligne en mémoire



yy copie la ligne actuelle en mémoire.
Cela fonctionne comme dd qui la "coupe". Vous pouvez aussi utiliser yw (pour copier un mot), y$ pour copier du curseur jusqu'à la fin de la ligne, etc.


p : coller



Si vous avez "coupé" du texte avec dd ou copié du texte avec yy (ou un de leurs équivalents) vous pouvez ensuite le coller avec la touche p.

Attention, retenez bien ceci : si vous avez copié une ligne en mémoire et que vous appuyez sur "p", elle sera collée sur la ligne située après le curseur.
On est parfois surpris de voir où se colle le texte, donc prenez le temps de vous y habituer.


Vous pouvez aussi coller plusieurs fois un texte en faisant précéder le "p" d'un nombre. Par exemple, 8p collera 8 fois le texte en mémoire.

Si je place mon curseur sur une ligne, que je tape yy puis 8p, je la collerai donc 8 fois !

Collage dans Vim



r : remplacer une lettre



Si vous avez fait une faute sur seulement une lettre, vous pouvez passer en mode remplacement.

Placez le curseur sur la lettre à remplacer. Tapez r suivi de la lettre que vous voulez mettre à la place. Par exemple, rs remplace la lettre actuelle par un "s".

Si vous utilisez un R majuscule, cette fois vous basculerez dans le mode remplacement : vous pourrez remplacer plusieurs lettres à la fois. Vous pouvez par exemple écrire Rbonjour pour remplacer les caractères par "bonjour".
Pour revenir au mode interactif normal, appuyez sur Echap.


u : annuler les modifications



Pour annuler vos dernière modifications, appuyez sur u (undo). Si vous souhaitez annuler vos 4 dernières modifications, appuyez sur 4u (vous commencez à connaître la formule, c'est toujours la même ;) ).

Pour répéter un changement (= annuler une annulation), appuyez sur Ctrl + R.


G : sauter à la ligne n°X



Toutes les lignes d'un fichier ont un numéro. La numérotation commence à 1.

Regardez bien en bas à droite de Vim, vous devriez voir quelque chose comme 4,3. 4 correspond au numéro de la ligne sur laquelle se trouve le curseur, et 3 correspond au numéro de la colonne (3ème lettre de la ligne).

Vous pouvez directement sauter à la ligne n°7 par exemple en tapant 7G (attention, c'est un G majuscule, donc pensez à laisser la touche "Maj" appuyée).

Pour sauter à la dernière ligne, tapez simplement G.
Pour revenir à la première ligne, tapez gg.

Opérations avancées (split, fusion, recherche...)

Nous avons vu l'essentiel des commandes les plus courantes. Nous allons maintenant découvrir une série de commandes un peu plus complexes (quoique, ça dépend desquelles ;) ) parmi lesquelles la fusion de fichiers, la recherche, le remplacement, le découpage de l'écran (split), etc.

Toutes ces commandes se lancent depuis le mode interactif.

/recherche : rechercher un mot



Si vous tapez /, vous passez en mode recherche. Le curseur se place en bas de l'écran (vous indiquant que vous êtes passé en mode commande).
Ecrivez ensuite le mot que vous recherchez, par exemple "remplir" : /remplir. Tapez ensuite sur Entrée pour valider.

Le curseur se place alors sur la prochaine occurrence de "remplir" dans le fichier.
Pour passer à la prochaine occurrence du mot plus bas dans le fichier (s'il apparaît plusieurs fois), appuyez sur n. Pour rechercher en arrière, appuyez sur N (Maj + n).

Si vous souhaitez dès le départ lancer une recherche qui remonte vers le début du fichier, utilisez ? au lieu de / pour lancer la recherche. Le fonctionnement reste le même.



:s : rechercher et remplacer du texte



Pour rechercher et remplacer du texte, c'est un peu plus compliqué. Il y a en effet plusieurs façons d'effectuer le remplacement.

La façon la plus simple de faire une recherche est de taper :s/ancien/nouveau pour rechercher "ancien" et le remplacer par "nouveau". Problème... cela ne remplacera que la première occurrence d'ancien par nouveau.

Voici toutes les variantes à connaître :

  • :s/ancien/nouveau : remplace la première occurrence de la ligne où se trouve le curseur.
  • :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. C'est peut-être ce que vous utiliserez le plus fréquemment.



:r : fusion de fichiers



Avec :r, vous pouvez insérer un fichier à la position du curseur. Vous devez indiquer le nom du fichier à insérer, par exemple : :r autrefichier.

L'auto-complétion avec Tab fonctionne là-aussi, donc pas besoin d'écrire le nom du fichier en entier !


Le découpage d'écran (split)



Vim possède une fonctionnalité pratique : il permet de découper l'écran et d'ouvrir plusieurs fichiers


:sp : découper l'écran horizontalement



Le plus simple pour commencer est de découper l'écran horizontalement. Tapez la commande :sp pour découper l'écran en deux :

Split dans Vim


Le fichier est ouvert une seconde fois (ce qui vous permet de voir 2 endroits différents du fichier à la fois) mais il est bien entendu possible d'ouvrir 2 fichiers différents. Pour faire cela, rajoutez le nom du fichier à ouvrir à la suite de la commande : :sp autrefichier. Bonne nouvelle : l'auto-complétion avec la touche Tab fonctionne aussi dans Vim ! :)

Vous pouvez retaper :sp pour découper cette fois l'écran en 3 et ainsi de suite, mais gare à la lisibilité ensuite. ;)


:vsp : découper l'écran verticalement



Si le découpage horizontal par défaut ne vous convient pas, sachez que vous pouvez aussi effectuer un découpage vertical avec :vsp.

Découpage vertical dans Vim


Il est bien entendu possible de répéter plusieurs fois la commande, et même de combiner des découpages verticaux et horizontaux. :-°


Les principaux raccourcis en écran splitté



Chaque morceau de l'écran (correspondant à un fichier) est appelé viewport.
Voici une liste de raccourcis pratiques que vous pouvez utiliser lorsque l'écran est splitté (découpé) :

  • Ctrl + w puis Ctrl + w : navigue de viewport en viewport. Répétez l'opération plusieurs fois pour accéder au viewport désiré.
  • Ctrl + w puis j : déplace le curseur pour aller au viewport juste en-dessous. La même chose fonctionne avec les touches h, k et l que l'on utilise traditionnellement pour se déplacer dans Vim.
  • Ctrl + w puis + : agrandit le viewport actuel.
  • Ctrl + w puis - : réduit le viewport actuel.
  • Ctrl + w puis = : égalise à nouveau la taille des viewports.
  • Ctrl + w puis r : échange la position des viewports. Fonctionne aussi avec "R" majuscule pour échanger en sens inverse.
  • Ctrl + w puis q : ferme le viewport actuel.


Voilà qui devrait vous permettre de faire ce que vous voulez en écran splitté. :D


:! : lancer une commande externe



Il est possible d'écrire des commandes traditionnelles du shell directement dans Vim. Pour cela, commencez par taper :! suivi du nom de la commande.

Essayez par exemple de taper :!ls. Vous afficherez alors le contenu du dossier dans lequel vous vous trouvez !
Cette fonctionnalité est bien pratique pour effectuer quelques actions sans avoir à quitter Vim.

Les options de Vim

Vim peut être personnalisé de 2 façons différentes :



Nous n'allons pas passer en revue les plugins, mais il y a un certain nombre d'options intéressantes qu'il vaut le coup d'activer.


Le fonctionnement des options



Les options peuvent être activées après le lancement de Vim en lançant des commandes. Cependant, ces options seront "oubliées" dès que vous quitterez Vim.
Si vous voulez que les options soient activées à chaque démarrage de Vim, il faut créer un fichier de configuration .vimrc dans votre répertoire personnel.


Activer des options en mode commande



La première méthode consiste à activer l'option en mode commande. Une fois Vim ouvert, pour activer l'option nommée "option", tapez :

:set option

Pour la désactiver, tapez :

:set nooption

Il faut donc rajouter le préfixe "no" devant le nom de l'option pour la désactiver.


Certaines options doivent être précisées avec une valeur, comme ceci :

:set option=valeur


Pour connaître l'état d'une option :

:set option?


Activer des options dans un fichier de configuration



C'est à mon avis la meilleure façon de procéder. Commencez par copier un fichier de configuration déjà commenté qui vous servira d'exemple. Il y en a un dans /etc/vim qui s'appelle vimrc.

Copiez-le dans votre répertoire personnel en le faisant précéder d'un point (pour que ce soit un fichier caché) :

Code : Console
$ cp /etc/vim/vimrc ~/.vimrc


Ouvrez maintenant ce fichier... avec Vim bien sûr. :)

Code : Console
$ vim .vimrc


Le début du fichier ressemble à ceci :

Code : Console
" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
" you can find below.  If you wish to change any of those settings, you should
" do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
" everytime an upgrade of the vim packages is performed.  It is recommended to
" make changes after sourcing debian.vim since it alters the value of the
" 'compatible' option.

" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
runtime! debian.vim

" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
" options, so any other options should be set AFTER setting 'compatible'.
"set compatible

" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
"syntax on

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well


Les lignes commençant par " sont des commentaires. Je vous recommande de les lire, ils donnent des informations utiles.


Passons maintenant à l'activation de quelques commandes bien utiles. Je vous recommande de travailler avec le fichier de configuration .vimrc comme moi, et d'activer les options qui vous plaisent en décommentant les lignes concernées.
Pour cela, la meilleure façon de procéder est de se mettre en mode interactif, de se déplacer avec hjkl, et d'appuyer sur x lorsque le curseur est sur un guillemet pour le supprimer et activer ainsi l'option. :)


syntax : activer la coloration syntaxique



C'est clairement la première option à activer : la coloration syntaxique. En fonction du type de fichier que vous ouvrez, Vim colorera le texte.

Vim supporte un très très grand nombre de langages de programmation : C, C++, Python, Java, Ruby, Bash, Perl, etc.

Activez donc :

Code : Console
syntax on


Notez qu'il faut enregistrer, quitter et relancer Vim pour que le changement soit pris en compte... sauf bien sûr si vous activez l'option à la volée en tapant dans Vim :set syntax=ON


Aperçu du résultat :

Coloration dans Vim


background : coloration sur un fond sombre



Par défaut, la coloration de Vim est plus adaptée aux fonds clairs. Les commentaires, par exemple, sont écrits en bleu foncé sur noir... pas très lisible.

Si votre console est sur un fond noir comme chez moi, je vous recommande d'activer la prochaine option background et de la mettre à "dark".

Code : Console
set background=dark


Les couleurs seront largement plus adaptées :

Coloration fond sombre dans Vim



number : afficher les numéros de ligne



Il est possible d'afficher le numéro de chaque ligne à gauche :

Code : Console
set number


C'est assez pratique, notamment quand on programme.

Numéros de ligne Vim



showcmd : afficher la commande en cours



Lorsque vous écrivez une commande comme 2dd pour supprimer 2 lignes, vous écrivez à l'aveugle. Vous ne voyez pas ce que vous avez écrit.

Si cela n'était pas possible dans Vi, on peut le faire dans Vim. Encore faut-il activer l'option :

Code : Console
set showcmd


ignorecase : ignorer la casse lors de la recherche



Si vous souhaitez que, lors d'une recherche, Vim ne fasse pas la différence entre les majuscules et les minuscules, activez cette option :

Code : Console
set ignorecase



mouse : activer le support de la souris



Eh oui ! Même en mode console, il est possible d'utiliser la souris.
Commencez par activer le support de la souris :

Code : Console
set mouse=a


Désormais, vous pourrez cliquer avec la souris sur une lettre pour y déplacer le curseur directement. Vous pourrez utiliser la molette de la souris pour vous déplacer dans le fichier. :)

Vous pourrez aussi sélectionner du texte avec la souris. Vous passerez alors en mode visuel.
Dans ce mode, vous pouvez supprimer le texte sélectionné (avec x comme d'habitude), mais aussi mettre le texte tout en majuscules (U), minuscules (u), etc.

Pour plus d'informations, lisez la documentation du mode visuel de Vim.

Q.C.M.

Dans quel mode débute-t-on avec Vim ?
Sous quel mode peut-on enregistrer le fichier ?
En mode interactif, quelle touche utilise-t-on pour se déplacer vers le bas ?
J'ai effectué des modifications sur un fichier mais je souhaite sortir sans rien enregistrer. Quelle commande dois-je taper ?
Quelle touche permet d'aller en fin de ligne ?
Je souhaite supprimer 3 lignes. Que dois-je taper ?
Les lignes ainsi supprimées ont en fait été "coupées" et placées en mémoire. Je souhaite les rajouter en fin de fichier.
Je dois tout d'abord me rendre à la fin du fichier. Que dois-je taper ?
Maintenant que je suis à la fin du fichier, comment puis-je coller les lignes qui sont en mémoire ?
Je souhaite annuler les 2 dernières modifications que je viens de faire pour revenir comme avant. Comment faire ?
En écran splitté, comment fermer le viewport sur lequel se trouve le curseur ?

Statistiques de réponses au QCM

Le surnom de Vim est "Programmer's text editor" (l'éditeur de texte du programmeur). On se rend compte à l'usage qu'il est en effet bien adapté à la programmation : coloration syntaxique poussée de très nombreux langages, affichage du numéro de ligne, mise en surbrillance de la parenthèse ou de l'accolade correspondante, etc. Il est même possible de compiler et lancer ses programmes directement depuis Vim !

Pourtant, il n'est pas facile à prendre en main. Ce tutoriel vous aura permis d'avoir une bonne petite introduction à Vim, afin que vous ne soyez pas perdus, mais retenez bien ceci : nous sommes très loin d'avoir vu toutes les possibilités du logiciel ! Sans plugins, on peut déjà faire des tonnes de choses, le tout étant de se renseigner et de lire la documentation.

N'hésitez pas à aller plus loin que ce chapitre. Même si sa lecture sera suffisante pour suivre la fin du cours, je vous conseille vraiment de parcourir un peu la doc et de demander des conseils. On peut faire des choses étonnantes.


Bien, maintenant que vous savez manier un éditeur de texte digne de ce nom, il est temps de passer aux choses sérieuses : la programmation ! Direction le prochain chapitre, on va faire des scripts bash ! :D
Chapitre précédent Sommaire Chapitre suivant

Partager

45 commentaires pour "Vim : l'éditeur de texte du programmeur"
Note moyenne : 3.81 / 4 (995 votes)
Pseudo Commentaire
Hors ligne steflinux # Posté le 27/09/2010 à 17:12:54
Avatar

Citation : SokoC
Joli tutoriel mais je ne vois pas l'intérêt d'utiliser un éditeur console


Ben, disons, l'intérêt numéro 1, vraiment, c'est qu'en milieu professionnel, tu n'as parfois pas d'autre alternative : un terminal et voila. Donc quelques notions sont utiles (:wq, ESC, i, a, x, dd). Mais même sans travailler dans l'informatique, vi dépanne rapidement pour modifier un fichier de configuration ou autre...

L'intérêt numéro 2, pour moi, est qu'il y a souvent du micmac quand plusieurs formats cohabitent (UTF-8, ISO-whatever, etc), vi m'a souvent sauvé la mise quand d'autres éditeurs plus conviviaux affichaient un peu tout et n'importe quoi.

Par contre, n'étant pas Taligeek, j'utilise aussi Gedit sous Linux (j'ai été déçu par d'autres éditeurs comme Bluefish et Geany, non pas parce qu'ils ne sont pas bons, mais parce que, ma foi, Gedit me suffit amplement). Il faudrait idéalement aussi que j'installe Notepad++ sous Wine, celui-là, il me manque sous Linux.

-- Stef

(Un man fr : www.man-linux-magique.net )
 
Hors ligne alatox # Posté le 13/10/2010 à 09:12:00

Avis : Bon

Pourquoi ne pas systématiquement traduire les commandes par exemple p pour paste, d pour delete, w pour write, q pour quit etc ... c'est beaucoup plus facile à retenir ainsi.
Hors ligne alatox # Posté le 13/10/2010 à 10:27:13

Avis : Bon

Pour en revenir à la remarque de Sokoc, les editeurs de textes console comme vi sont légers et permettent d'ouvrir de plus gros fichiers sans avoir à les découper. Fait un test, essaye d'ouvrir un fichier texte de 300 Mo(ou plus grand) avec notepad++ puis avec vi console voire l'éditeur ed. Tu verras la différence de performances. C'est très utilisé notamment pour consulter et rechercher dans les fichiers de logs sur les serveurs qui atteignent des tailles gigantesque et obligent parfois à les découper. avant de pouvoir les lire.

Ensuite, les remarques de Miphys gagneraient à être prises en compte.
Hors ligne aiatar # Posté le 18/03/2011 à 18:21:10

Bonjour,

Je ne possede pas Intrnet sur l'ordinateur où j'ai installé Ubuntu,
Et je voudrais savoir comment je peux installer Vim(la vrai version) sans le telecharger depuis Ubuntu
(mais depuis un autre ordi où il y a Internet).
Hors ligne akojy # Posté le 22/05/2011 à 17:48:59
Avatar

Si les flèches sont déconseillé, pour la touche 0 pour aller à la première ligne vous utilisez quoi ? le pavé numérique ou maj+à(0) ?

Voir tous les commentaires