Vim

Posted by IT NISRO 0 commentaires

 Vim (acronyme pour Vi Improved) est un éditeur de texte créé par Bram Mooleannaar et datant de 1991. Basé sur l'éditeur de texte des système Unix vi, Vim peu être aussi bien utilisé en ligne de commande qu'avec une interface graphique.


Vim est un outil gratuit et open source qui au fil des années est devenu l'un des standards de l'édition de texte dans le monde informatique.

Son mode de fonctionnement est repris dans diverses applications et je pense qu'il est nécessaire pour de futurs ingénieurs de connaitre le minimum vital pour pouvoir utiliser Vim

Apprendre Vim

Vim est un logiciel très difficile à appréhender car il nécessite un temps d'apprentissage relativement long. En effet, son fonctionnement diffère des éditeurs de texte classique et son utilisation peu être déroutante au premier abord.

On peu assimiler l'apprentissage de Vim comme l'apprentissage de la conduite. Il faut apprendre par étape (d'abord le volant puis les pédales etc ...) et pratiquer régulierement.

Il ne faut surtout pas chercher à mémoriser l'ensemble des commandes par coeur. Même le créateur de Vim affirme ne pas connaitre la totalité des commandes. Les commandes Vim ont un sens et il faut comprendre la logique sous jacente.

Les bases

L'utilisation de Vim est faite sous forme de mode. Chaque mode possède un rôle spécifique et il est possible de passer entre les différents modes.

Voici les principaux modes

  • Le mode normal (mode par défaut)
  • Le mode ligne de commande
  • Le mode insertion
  • Le mode visuel

Mode normal : Mode principal, il permet la manipulation de texte et est utilisé pour changer de mode. On y revient depuis n'importe quel mode en appuyant sur Esc

Mode ligne de commande : Utilisé pour taper une commande vim ou pour la recherche. On peut y accéder en appuyant sur i (insert) ou a (append)

Mode insertion : Utilisé pour inséré du texte. Attention, ce mode ne devrait pas être utilisé pour la manipulation de texte (comme la suppression de caractère). On peut y accéder en appuyant sur : ou / ou ?

Mode visuel : Utilisé selectionner du texte. On peut y accéder en appuyant sur v

Les commandes

Quelques commandes de bases pour l'edition de fichier

  • Editer un fichier :e (edit)
  • Quitter un fichier :q (quit)
  • Quitter un fichier sans sauvegarder :q!
  • Sauvegarder :w (write)
  • Sauvegarder et quitter :wq (write and quit)

Les déplacements

Les déplacements sont à effectuer dans le mode normal.

Les déplacements par caractères:

Les déplacements par mot:

  • Mot par mot w (word)
  • Debut d'un mot b (begin)
  • Fin d'un mot e (end)

Les déplacements par ligne:

  • Debut d'une ligne ^ (cf regexp)
  • Fin d'une ligne $ (cf regexp)
  • Aller à la ligne X :X
  • Début du fichier gg
  • Fin du fichier G

Parler Vim

Les phrases

Vim est différent des éditeurs de texte classique. D'une part à cause de son fonctionnement par mode, mais également à cause de par son approche de l'edition. Il faut voir l'utilisation de Vim comme un dialogue entre l'utilisateur et son editeur. L'utilisateur va demander des requêtes à Vim et ce dernier va effectuer les commandes.

On peut donc parler sous forme de phrase pour réaliser des actions. Chaque phrase est composée de 3 éléments: un "Verbe", un "Modificateur" et un "Objet". Vim étant anglophone il faut penser la construction de phrase en anglais.

Verb → Modifier → Object

Tout de suite un exemple, pour mieux comprendre. Prennons la phrase "Change inner word" qui se traduit par "Change l'interieur du mot". Cette phrase s'effectue sous Vim de cette forme:

  • c (Change)
  • i (Inner)
  • w (Word)

Cet ensemble de touche va supprimer le mot courant et placer Vim en mode insertion.

Une bonne pratique pour apprendre à utiliser Vim est donc de parler en même temps qu'on effectue les commandes.

Verbs

Voyons à présent les différents verbes disponibles.

  • d (Delete)
  • c (Change)
  • y (Yank/copy)
  • p (Paste)
  • v (Visual)

Cette ensemble d'action retrace toute les actions que vous êtes amenés à effectuer lors de l'édition de texte. Les touches sont souvent intuitives et représentes la première lettre de chaque action.

Modifiers

Les modificateurs sont des adjectifs pour la commande. Ils vont permettre de préciser jusqu'où porte la commande. Voici quelques modificateurs :

  • i (Inner/Inside)
  • a (Around)
  • f (Find)
  • t (Til/until)

La différence entre Find et Til est subtile. Til ira jusqu'au caractère recherché sans l'inclure tandis que Find ira jusqu'au caractère recherché en incluant ce dernier

Text objects

Les text objects sont ceux sur quoi la l'action va être réalisée. Voici quelque exemples de text objects :

  • w (Word)
  • s (Sentence)
  • p (Paragraph)
  • b (Block / parenthese)
  • t (Tags xml/html)

On note aussi qu'il est possible de mettre certains caractères comme objet. Ainsi tous les caractères ouvrant-fermant fonctionnement comme (), "", , <>, {}, [].

Supprimer dans une parenthèse revient donc à faire di(

Exemples

Voici quelques exemples pour s'exercer:

  • Delete til the end of line → d$
  • Change til the next 'a' → cta
  • Change in " → ci"

Avec de la pratique vous serez beaucoup plus performant qu'avec un éditeur de texte classique. Cela vous amenera même à trouver des plugins pour modifier le comportement d'autres éditeurs de texte (Sublime text, Brackets, Emacs) pour qu'ils émulent le comportement de Vim.

Usages avancés

Gestion de l'historique

Vim possède une gestion assez fine de l'historique ce qui permet d'être performant lors de certaines tâches répétitves.

  • u (Undo)
  • Ctrl + r (Redo)
  • . (Repeat the last action)

On note que l'action "Redo" n'est pas sur la touche "r" directement celle ci étant déjà dédiée au mode "Replace".

  • / (Search)
  • ? (Reverse Search)
  • * (Search the current word)

Pour l'ensemble de ces commandes, la touche n permet d'aller à l'occurence de recherche suivante (next) et la touche N perment d'aller à l'occurence précédente.

La touche Esc permettant de sortir du mode recherche.

Actions sur les lignes

De la même manière qu'un verbe peut s'appliquer sur un mot, les verbes peuvent aussi s'appliquer directement sur des lignes. Pour cela il suffit de doubler la touche du verbe en question.

  • dd (Delete the curent line)
  • yy (Yank the curent line)
  • cc (Change the curent line)
  • ...

On peut également réindenter la ligne courante avec la commande ==

Le mode insertion ne devant pas servir à insérer des sauts de ligne. La commande o (open) permet d'ouvrir une nouvelle ligne après la ligne courante.

Importance de la casse

Vim ayant énormement de commande, la case à une importance primordial. Voici quelques exemples :

  • O Ouvrir une ligne avant la ligne courante
  • P Coller avant le curseur
  • I Insérer au début de la ligne courante
  • A Insérer à la fin de la ligne courante

Split

Contrairement à d'autre éditeur, Vim permet de modifier deux (ou plus) fichiers simultanément. Pour cela Vim utilise des "split" qui vont découper chaque fichier en plusieurs fenêtres au sein de Vim.

  • :split pour créer un split horizontal
  • :vsplit pour créer un split vertical
  • Ctrl + w pour naviguer récursivement entre les fenêtres

Autocompletion

Comme la plupart des éditeurs récents, Vim possède une fonction d'autocompletion. Vim ne travaillant qu'avec des regexp, cette autocompletion n'est que de l'autocompletion par syntaxe et non contextuelle.

  • Ctrl + n Autocompletion basique
  • Ctrl + x → Ctrl + KEY Autocompletion étendue avec plusieurs sous modes comme autocompletion de lignes etc

Certain plugins arrive tout de fois à avoir une autocompletion plus poussée.

Pour aller plus loin

La communauté

La communauté autour de Vim est assez conséquente. Il ne faut pas hésiter à chercher une astuce et se documenter pour comprendre certaines choses. De nombreux plugins sont mis à disposition faisant diverses choses suivant les goûts et les couleurs. La configuration de Vim est faite pour être personnelle et il ne faut pas hésiter à configurer l'outil afin d'être plus productif.

Références

Pour réaliser cet exposé je me suis inspiré de multiples sources:


.

0 commentaires:

Enregistrer un commentaire

Membres

Formulaire de contact

Nom

E-mail *

Message *