User Tools

Site Tools


informatique:logiciels:vim

This is an old revision of the document!


utilitaire éditeur

Directement inspiré de Vi, Vim (Vi IMproved) est un des plus connus éditeurs de texte du monde libre. Il est composé de 2 modes : le mode insertion et le mode commande. On passe en mode commande en pressant esc (échappement) et en mode insertion de diverses manières :

  • i (insert) insérer du texte avant le curseur ; I insérer en début de ligne
  • a (append) insérer du texte après le curseur ; A insérer en fin de ligne
  • o insérer du texte après la ligne courante ; O insère du texte avant le ligne courante
  • I et A pour ajouter en début et fin de phrase

Le mode insertion permet de taper du texte, le mode commande permet de faire tout le reste (tout ce qui suit). Il faut noter que en mode commande, la touche <tab> permet l'auto-complétion comme en console.

Le mode insertion

  • ctrl+p complétion automatique du mot courant sur la base des buffers ouverts et du/des fichiers .ctags

Gestion du fichier

  • : permet de lancer une commande et place le curseur en bas de la fenêtre.
  • :q (quit) permet de quitter un fichier. Si le fichier à été modifié il faut utiliser :q!
  • :w (write) permet de sauvegarder le fichier ; :wq permet de sauvegarder et quitter ; :w <fic> permet de sauvegarder sous un nouveau fichier nommé <fic>
  • :e <fic> (edit) sauvegarde le fichier courant et ouvre <fic> ; :e! <fic> ouvre <fic> fichier sans sauvegarder l'ancien fichier.

Position du curseur

  • 0 et $ permettent de placer le curseur en début et en fin de ligne
  • gg et G permet d'aller au début / à la fin du fichier
  • <nb>G< aller à la ligne <nb> (équivalent à :<nb>)
  • w avance le curseur d'un mot ; W avance le curseur après le prochain espace
  • b recule le curseur d'un mot ; B recule le curseur après le dernier espace
  • { et } permettent de changer de paragraphe
  • ( et ) permettent de changer de phrase
  • F et n suivi d'une lettre pour se rendre à la prochaine occurrence de cette lettre

Manipulation de chaines

Manipulations basiques

  • x suppression de caractère (équivalent à <suppr> en mode insertion)
  • D suppression de fin ligne courante (située à droite du curseur)
  • dd ou D couper la ligne (ou la supprimer si on ne la recolle pas..)
  • yy ou Y copier la ligne

Les 2 commandes ci-dessus peuvent être précédées d'une nombre permettant d'affecter l'action à <nb> lignes à la fois. Par exemple 3dd (ou 3D permet de couper les 3 lignes suivant le curseur. Cette factorisation fonctionne avec certaines autres commandes (l'expérience vous dira lesquelles :))

  • p (paste ?) coller après la ligne courante
  • P coller avant la ligne courante
  • :r <fic> pour ajouter le contenu du fichier <fic> après la ligne courante

Le mode visuel

Il existe un mode visuel permettant de sélectionner du texte visuellement pour faire une action dessus.

  • v permet de sélectionner caractère par caractère
  • V permet de sélectionner ligne par ligne
  • ctrl+v permet de sélectionner par bloc (tableau)

Une fois le bon texte surligné, on choisi une action à appliquer :

  • d pour couper
  • y pour copier

On peut le coller par la suite avec p. Pour supprimer le texte, on le coupe sans le coller derrière.

Recherche de chaine

/<motif> permet de rechercher et mettre en surbrillance un <motif> dans tout le fichier ouvert. la touche n permet de passer au motif suivant, N au précédent. On peut rechercher à l'envers (de bas en haut) de la même façon avec ?<motif>.

Si on presse la touche *, on fait une recherche sur le mot sur lequel est positionné le curseur.

Remplacement de chaine

On peut remplacer du texte avec une syntaxe plus ou moins similaire à sed. Par exemple je veux remplacer tous les “e” par des “E” sur les lignes 10 à 20 : :10,20s/e/E/g. C'est barbare mais logique : en mode commande on tape :

  • 10,20 pour déterminer la portion de texte visée (de la ligne 10 à la ligne 20). Le caractère 0 indique le début du fichier et $ la fin. On peut contracter 0,$ par % qui a une fonction indentique.
  • s pour la substitution de chaine
  • /e/E/ répond à la syntaxe /<motif recherché>/<motif de remplacement>/
  • g indique que l'on veut remplacer toutes les occurences du <motif recherché> (par défaut on ne modifie que la première).

Divers

  • u undo, annuler la dernière opération ou <nb>u pour annuler les <nb> dernières opérations
  • :U Undo, annuler toutes les opérations faites sur le ligne courante
  • [<nb>] ctrl+r redo [les <nb> dernières opérations]
  • :!<cmd> exécute la commande <cmd>
  • ctrl+g affiche des information sur le fichier dans la barre d'état
  • Supprimer les disgracieux retours à la ligne des fichiers mal encodés (les retours à la ligne ^M) : on utilise la syntaxe de sed, en mode commande :
<echap>
:%s/^M//g

Notez que le ^M s'écrit ctrl+v, ctrl+m.

Commandes avancées

et pas forcément très utiles..

  • h j k l : normalement les flèches directionnelles fonctionnent, mais comme sous vi, on peut se déplacer dans le fichier, respectivement gauche, bas, haut, droite. J'avoue que ce n'est pas très avancé mais ça évite d'encombrer les commandes princpales.
  • . répéter l'action
  • r replace, remplacer le caractère
  • ~ change la casse du caractère courant
  • = indente la ligne suivant le curseur:w
  • J concatène la ligne courante avec la ligne suivante

Diviser la fenêtre

VIM permet de diviser la fenêtre de façon à travailler simultanément sur 2 fichiers (ou plus..).

En mode commande, taper :split permet de diviser l'écran horizontalement, et :vsplit verticalement. Si on spécifie en paramètre un nom de fichier (:split <fic>, en sachant que vous pouvez utiliser l'auto-complétion avec <tab> comme en console), ce dernier sera ouvert dans le nouveau cadre ; sinon le cadre sera rempli par le même fichier que l'original. Les opérations sur les fenêtre commencent par ctrl+w.

On passe d'un cadre à l'autre avec <ctrl+w> w (les touches control et w simultanément, puis w). On peut redimentionner le cadre courant avec ctrl+w + et ctrl+w - pour respectivement agrandir ou rétrécir le cadre d'une ligne. On peut ajouter un facteur devant le + et le - : ctrl+w 5+ augmentera la taille du cadre courant de 5 lignes. On annule le dernier redimentionnement avec un ctrl+w x.

Configuration

Quand on veut modifier une option, soit on édite le ~/.vimrc pour une modification permanante, soit on lance la commande set suivi de la modification, qui ne prend effet que pour la session courante de vim.

  • :set ts=4 les tabulations représentent 4 espaces
  • :set mouse=a active la souris (je ne conseille pas d'activer cette option car elle désactive les copier/coller avec le bouton du milieu)
  • :set paste désactive l'indentation automatique (:set nopaste pour la réactiver)

Liens

informatique/logiciels/vim.1234815654.txt.gz · Last modified: 2013/10/14 20:55 (external edit)