Démarrer avec vim

Quitter Vim

Pour quitter Vim, assurez-vous d’abord que vous êtes en mode Normal en appuyant sur Esc.

  • :q Entrée (vous empêchera de quitter si vous avez des modifications non enregistrées - abréviation de :quit)

Pour ignorer les modifications et quitter Vim :

  • :q! Entrée pour forcer la sortie et annuler les modifications (abréviation de :quit!, à ne pas confondre avec :!q),
  • ZQ est un raccourci qui fait la même chose que :q!,
  • :cq Entrée quitter et renvoyer l’erreur (ignorer toutes les modifications afin que le compilateur ne recompile pas ce fichier)

Pour enregistrer les modifications et quitter Vim :

  • :wq Entrée (raccourci pour :write et :quit),
  • :x Entrée (identique à :wq, mais n’écrira pas si le fichier n’a pas été modifié),
  • ZZ est un raccourci qui fait la même chose que :x (Enregistrer l’espace de travail et quitter l’éditeur),
  • :[range]wq! Enter (écrire les lignes dans [range])

Pour fermer plusieurs tampons à la fois (même dans plusieurs fenêtres et/ou onglets), ajoutez la lettre a à l’une des Commandes ci-dessus (celles commençant par :). Par exemple, pour écrire et quitter toutes les fenêtres, vous pouvez utiliser :

  • :wqa Entrée ou
  • :xa Entrée — Écrivez tous les tampons modifiés et quittez Vim. S’il y a des tampons sans nom de fichier, qui sont en lecture seule ou qui ne peuvent pas être écrits pour une autre raison, Vim ne quittera pas
  • :xa! Entrée — Écrivez tous les tampons modifiés, même ceux qui sont en lecture seule, et quittez Vim. S’il y a des tampons sans nom de fichier ou qui ne peuvent pas être écrits pour une autre raison, Vim ne quittera pas
  • :qa Entrée — essayez de quitter, mais arrêtez s’il y a des fichiers non enregistrés ;
  • :qa! Entrée — quitter sans enregistrer (ignorer les modifications dans tous les fichiers non enregistrés)

Si vous avez ouvert Vim sans spécifier de fichier et que vous souhaitez enregistrer ce fichier avant de quitter, vous recevrez le message E32 : No file name. Vous pouvez enregistrer votre fichier et quitter en utilisant :

  • :wq filename Entrée ou ;
  • :x filename Entrée

Explication:

La touche  : ouvre en fait le mode Commande. La commande q est une abréviation de quit, w, de write et x, de exit (vous pouvez aussi taper :quit, :write et :exit si tu veux). Les raccourcis ne commençant pas par : tels que ZZ et ZQ font référence aux mappages de touches en mode Normal. Vous pouvez les considérer comme des raccourcis.

La touche ! est parfois utilisée à la fin d’une commande pour forcer son exécution, ce qui permet d’annuler les modifications dans le cas de :q!. Placer le ! au début de la commande a une signification différente. Par exemple, on peut mal taper :!q au lieu de :q! et vim se terminera avec une erreur 127.

Un moyen facile de s’en souvenir est de penser à ! comme un moyen d’insister pour exécuter quelque chose. Tout comme lorsque vous écrivez : “Je veux arrêter !”

Bases

Exécutez des [tutoriels vim][1] interactifs autant de fois que nécessaire pour vous sentir à l’aise avec les bases.

Vim propose plusieurs modes, par ex. mode normal, mode insertion et mode ligne de commande.

Le mode normal est destiné à l’édition et à la navigation dans le texte. Dans ce mode, h, j, k et l correspondent aux touches de curseur , , et . La plupart des commandes en mode normal peuvent être précédées d’un “compte”, par ex. 3j descend de 3 lignes.

Le mode Insertion sert à insérer le texte directement. Dans ce mode, vim est similaire à d’autres éditeurs de texte plus simples. Pour entrer en mode insertion, appuyez sur i en mode normal. Pour le quitter, appuyez sur <ESC> (touche d’échappement).

Le mode ligne de commande permet d’exécuter des commandes plus complexes, telles que l’enregistrement du fichier et la sortie de vim. Appuyez sur : pour démarrer le mode ligne de commande. Pour quitter ce mode, vous pouvez également appuyer sur <ESC>. Pour enregistrer les modifications apportées au fichier, utilisez :w (ou :write). Pour quitter vim sans enregistrer vos modifications, utilisez :q! (ou :quit!).

Voici quelques-unes des commandes les plus utiles de vim :

Commande La description
je (insertion) passe en mode insertion avant la position actuelle du curseur
je entre en mode insertion avant le premier caractère imprimable de la ligne courante
a (append) passe en mode insertion après la position actuelle du curseur
A entre en mode insertion après le dernier caractère imprimable de la ligne courante
x supprimer le caractère à la position actuelle du curseur
‘X’ supprimer le caractère à gauche à la position actuelle du curseur
w passer au mot suivant
b passer au mot précédent
‘0’ passer au début de la ligne
$ passer à la fin de la ligne
r remplacer – passe en mode de remplacement pour un caractère. Le prochain caractère que vous tapez remplacera le caractère sous le curseur.
R passe indéfiniment en mode remplacement. Chaque caractère que vous tapez remplacera le caractère sous le curseur et avancera le curseur d’une unité.
s substitut - supprime le caractère à la position actuelle du curseur, puis passe en mode insertion
S supprimer la ligne actuelle sur laquelle se trouve actuellement le curseur et passer en mode insertion
<Esc>, <C-c> quitter le mode d’insertion et revenir au mode normal
u annuler
<C-r> refaire
dd, dw, dl, d$ couper la ligne courante, du curseur au mot suivant, ou le caractère, la position courante à la fin de la ligne courante respectivement, notez : D est l’équivalent de d$
cc, cw, cl changer la ligne courante, du curseur au mot suivant, ou le caractère, respectivement
yy, yw, yl, y$ copier (“copier”) la ligne actuelle, du curseur au mot suivant, ou le caractère, la position actuelle à la fin de la ligne actuelle respectivement
p, P mettre (“coller”) après ou avant la position actuelle, respectivement
o, O pour créer une nouvelle ligne vide, après ou avant la ligne courante et passer en mode insertion
:w écrire le tampon courant sur le disque
:q!, ZQ quitter sans écrire
:x, :wq, ZZ écrire et quitter
:aide ouvrir une fenêtre avec le fichier d’aide
:help {sujet} afficher l’aide pour un sujet spécifique
qz commencer l’enregistrement des actions pour enregistrer z, q pour terminer l’enregistrement, @z pour lire les actions. z peut être n’importe quelle lettre : q est souvent utilisé par commodité. En savoir plus : Macros

[1] : https://www.wikiod.com/fr/vim/demarrer-avec-vim#Tutoriels Vim interactifs (tels que vimtutor)

Enregistrement d’un fichier en lecture seule modifié dans Vim

Parfois, nous pouvons ouvrir un fichier que nous n’avons pas la permission d’écrire dans Vim sans utiliser sudo.

Utilisez cette commande pour enregistrer un fichier en lecture seule modifié dans Vim.

:w !sudo tee > /dev/null %

Que vous pourriez mapper sur :w!! dans votre .vimrc :

cmap w!! w !sudo tee > /dev/null %

Une invite vous sera présentée comme indiqué dans l’image.

[![Appuyez sur ENTREE ou tapez la commande pour continuer. [O]K, (L)echarger fichier :][1]][1].

Appuyez sur ‘O’ et le fichier sera enregistré. Il reste ouvert dans vi/vim pour plus d’édition ou de lecture et vous pouvez quitter normalement en tapant :q! car le fichier est toujours ouvert en lecture seule.

Commande Explication

:w ............................ isn't modifying your file in this case, 
   ............................ but sends the current buffer contents to 
   ............................ a substituted shell command
   !sudo ...................... call the shell 'sudo' command
         tee .................. the output of the vi/vim write command is redirected 
                                using the 'tee' command
             > /dev/null ...... throws away the standard output, since we don't need 
                                to pass it to other commands
                         % .... expands to the path of the current file

Sources:

  • Blog technique d’Adam Culp
  • [Stackoverflow, Comment fonctionne l’astuce vim “écrire avec sudo”] (http://stackoverflow.com/a/7078429/5773806)

[1] : http://i.stack.imgur.com/AUQss.png

Tutoriels Vim interactifs (tels que vimtutor)

vimtutor est un didacticiel interactif couvrant les aspects les plus élémentaires de l’édition de texte.

Sur un système de type UNIX, vous pouvez démarrer le didacticiel avec :

$ vimtutor

Sous Windows, « Vim tutor » se trouve dans le répertoire « Vim 7.x » sous « Tous les programmes » dans le menu Windows.

Voir :help vimtutor pour plus de détails.

D’autres didacticiels interactifs incluent ceux basés sur un navigateur :

  • Vim Adventures – Une version de jeu interactif de vimtutor disponible sur le web. Seuls les premiers niveaux sont gratuits.
  • Open Vim - Un terminal interactif qui vous enseigne les commandes de base avec des commentaires.
  • Vim Genius - Un autre terminal interactif qui comprend également des leçons intermédiaires et avancées, y compris des macros et arglist.

Installation

Le Vim sur votre machine - s’il y en a un - est très probablement une “petite” version qui manque de fonctionnalités utiles comme la prise en charge du presse-papiers, la coloration syntaxique ou même la possibilité d’utiliser des plugins.

Ce n’est pas un problème si tout ce dont vous avez besoin est un moyen rapide d’éditer les fichiers de configuration, mais vous allez bientôt vous heurter à un certain nombre de murs si vous avez l’intention de faire de Vim votre éditeur principal.

Il est donc généralement recommandé d’installer un build complet.

Installation sous Linux/BSD

Sur ces systèmes, l’astuce consiste simplement à installer la version GUI qui contient à la fois une commande gvim pour démarrer l’interface graphique et une commande vim pour démarrer le TUI.

Distributions basées sur Arch et Arch

$ sudo pacman -R vim
$ sudo pacman -S gvim

Distributions Debian et basées sur Debian

$ sudo apt-get update
$ sudo apt-get install vim-gtk

Distributions basées sur Gentoo et Gentoo

$ sudo emerge --sync
$ sudo emerge app-editors/gvim

Distributions basées sur RedHat et RedHat

$ sudo yum check-update
$ sudo yum install vim-X11

Fedora

$ sudo dnf check-update
$ sudo dnf install vim-X11

Slackware et distributions basées sur Slackware

$ sudo slackpkg update
$ sudo slackpkg install-new vim-gvim

OpenBSD et distributions basées sur OpenBSD

$ sudo pkg_add vim-x11

FreeBSD et distributions basées sur FreeBSD

$ sudo pkg install editors/vim

Installation sur Mac OS X

La stratégie est similaire à Mac OS X : nous installons la version GUI pour obtenir à la fois l’interface graphique et le TUI. Au final, nous devrions pouvoir :

  • double-cliquez sur l’icône MacVim dans le Finder,
  • cliquez sur l’icône MacVim dans le Dock,
  • lancez $ mvim dans le shell pour ouvrir l’interface graphique de MacVim,
  • lancez $ mvim -v dans le shell pour ouvrir le TUI MacVim.

Installation régulière

Téléchargez et installez [un instantané officiel][1] comme vous le feriez avec n’importe quelle autre application Mac OS X.

Placez le script mvim fourni avec MacVim quelque part dans votre $PATH.

Directeur chargé d’emballage

MacPort :

$ sudo port selfupdate
$ sudo port install macvim

Brassage maison :

$ brew install macvim

Pour faire de MacVim la console Vim par défaut :

$ brew install macvim --with-override-system-vim

##Installation sous Windows

Il n’y a pas de Vim sur les systèmes Windows par défaut. Vous pouvez télécharger et installer Vim depuis le [site Tuxproject][1] pour des versions plus récentes et complètes ou vous pouvez télécharger et installer Vim depuis le [site Vim][2] officiel.

Chocolaté

> choco install vim

Construire Vim à partir des sources

Si les méthodes ci-dessus ne répondent pas à vos besoins, il est toujours possible de construire Vim vous-même, avec uniquement les options dont vous avez besoin.

Ce sujet sera abordé dans sa propre section (actuellement en projet).

[1] : https://github.com/macvim-dev/macvim/releases [2] : http://www.vim.org/download.php#pc [3] : https://www.wikiod.com/fr/vim

Suspendre vim

Lorsque vous utilisez vim depuis la ligne de commande, vous pouvez suspendre vim et revenir à votre invite, sans réellement quitter vim. Par conséquent, vous pourrez plus tard récupérer votre session vim à partir de la même invite.

En mode normal (sinon, appuyez sur esc pour y accéder), lancez l’une de ces commandes :

:stentrer

:susentrer

:stopentrer

:suspendEntrée

Alternativement, sur certains systèmes, en mode Normal ou Visuel, appuyer sur Ctrl+Z aura le même effet.

Remarque : Si autowrite est défini, les tampons avec les modifications et les noms de fichiers seront écrits. Ajoutez un ! avant enter pour éviter, par exemple. :st!Entrez.

Plus tard, lorsque vous voudrez revenir à votre session vim, si vous n’avez suspendu aucune autre tâche, la commande suivante restaurera vim en tant que tâche de premier plan.

fgentrer

Sinon, vous devrez trouver l’ID de travail de vos sessions vim en tapant jobsenter puis en mettant au premier plan les travaux correspondants fg %[job ID]enter par exemple. fg %1Entrée.

Que faire en cas de crash

Vim enregistre toutes vos modifications non enregistrées dans un fichier d’échange, un fichier supplémentaire qui est supprimé une fois les modifications validées lors de l’enregistrement. Le nom du fichier d’échange est généralement le nom du fichier en cours d’édition précédé d’un . et d’un suffixe .swp (vous pouvez le voir avec :sw).

Ainsi, si votre processus vim se termine avant que vous n’ayez eu la possibilité d’enregistrer vos modifications, vous pouvez récupérer votre travail en appliquant les modifications contenues dans le fichier d’échange à votre fichier actuel en utilisant l’option de ligne de commande -r. Par exemple, si myFile est le fichier que vous étiez en train d’éditer, utilisez :

$ vi -r myFile

pour récupérer les modifications non validées.

Si un fichier d’échange existe, vim devrait quand même vous demander des options de récupération

$ vi myFile
E325: ATTENTION
Found a swap file by the name ".myFile.swp"
...
Swap file ".myFile.swp" already exists!
[O]pen Read-Only, (E)dit anyway, (R)ecover, (D)elete it, (Q)uit, (A)bort:

Si vous choisissez (R)ecover, les modifications du fichier swp sont appliquées mais le fichier d’échange ne sera pas supprimé, alors n’oubliez pas de supprimer le fichier d’échange par la suite si vous êtes satisfait de la récupération.