vim Tutoriel
Démarrer avec vim
Recherche…
Remarques
Vim (ou "Vi IMproved") est un éditeur de texte multi-mode ( modal ) basé sur console. Il est largement utilisé et disponible par défaut sur tous les systèmes Unix, Linux et Apple OS X. Vim a une grande communauté active et une large base d'utilisateurs. L'éditeur prend en charge tous les langages de programmation courants et de nombreux plugins sont disponibles pour étendre ses fonctionnalités.
Les développeurs apprécient l'éditeur pour sa rapidité, ses nombreuses options de configuration et sa puissante édition basée sur des expressions. En mode "commande", l'éditeur est contrôlé par des commandes clavier, de sorte que l'utilisateur n'est pas distrait par une interface graphique ou un pointeur de souris.
Vim est basé sur l'ancien éditeur Unix "vi" créé dans les années 70 et il est en développement continu depuis 1991. Avec les macros et les plugins, l'éditeur offre la plupart des fonctionnalités d'un environnement de développement intégré. Il est également capable de traiter de grandes quantités de texte avec son langage de script (vimscript) et ses expressions régulières.
Sujets principaux:
- installation
- modes d'édition
- la navigation
- édition de base
- édition avancée
- configuration
- plugins
- vimscript
- les macros
- communauté
- Projets liés
Versions
Version | Date de sortie |
---|---|
8.0 | 2016-09-12 |
7,4 | 2013-08-10 |
7.3 | 2010-08-15 |
7.2 | 2008-08-09 |
7.1 | 2007-05-12 |
7.0 | 2006-05-07 |
6,0 | 2001-09-26 |
5.0 | 1998-02-19 |
4.0 | 1996-05-29 |
3.0 | 1994-08-12 |
2.0 | 1993-12-14 |
1,14 | 1991-11-02 |
Installation
Le Vim sur votre machine - s'il y en a un - est très probablement une "petite" version qui ne dispose pas de fonctionnalités utiles telles que le support de 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 des fichiers de configuration, mais vous allez bientôt atteindre 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 une version complète.
Installation sous Linux / BSD
Sur ces systèmes, l’astuce consiste simplement à installer la version GUI fournie avec une commande gvim
pour démarrer l’interface graphique et une commande vim
pour démarrer l’UTI.
Distributions basées sur Arch et Arch
$ sudo pacman -R vim
$ sudo pacman -S gvim
Distributions basées sur Debian et 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
Feutre
$ sudo dnf check-update
$ sudo dnf install vim-X11
Distributions basées sur Slackware et Slackware
$ sudo slackpkg update
$ sudo slackpkg install-new vim-gvim
Distributions basées sur OpenBSD et 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 de l'interface graphique pour obtenir à la fois l'interface graphique et l'interface utilisateur graphique. Au final, nous devrions pouvoir:
- double-cliquez sur l'icône MacVim dans le Finder,
- cliquez sur l'icône MacVim dans le Dock,
-
$ mvim
dans le shell pour ouvrir l'interface graphique de MacVim, -
$ mvim -v
dans le shell pour ouvrir l'interface utilisateur de MacVim.
Installation régulière
Téléchargez et installez un instantané officiel comme vous le feriez avec toute autre application Mac OS X.
Placez le script mvim
fourni avec MacVim quelque part dans votre $PATH
.
Directeur chargé d'emballage
MacPorts:$ sudo port selfupdate
$ sudo port install macvim
Homebrew: $ brew install macvim
Pour faire de MacVim la console par défaut Vim:
$ 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 de Tuxproject pour obtenir des versions plus récentes et complètes, ou vous pouvez télécharger et installer Vim à partir du site officiel de Vim .
Chocolaté
> choco install vim
Construire Vim depuis la source
Si les méthodes ci-dessus ne vous conviennent pas, il est toujours possible de créer Vim vous-même, avec uniquement les options dont vous avez besoin.
Ce sujet sera discuté dans sa propre section (actuellement en projet).
Sortie de Vim
Pour quitter Vim, assurez-vous d’être en mode Normal en appuyant sur Echap .
-
:q
Entrez (vous empêchera de quitter si vous avez des modifications non enregistrées - raccourci pour: quitter)
Pour ignorer les modifications et quitter Vim:
-
:q!
Entrez pour forcer la sortie et ignorer les modifications (abréviation de:quit!
ne pas confondre avec:!q
), -
ZQ
est un raccourci qui fait la même chose que:q!
, -
:cq
Entrez quit and return error (ignorez toutes les modifications pour que le compilateur ne recompile pas ce fichier)
Pour enregistrer les modifications et quitter Vim:
-
:wq
Enter (raccourci pour:write
et:quit
), -
:x
Entrez (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!
Entrez (écrivez les lignes dans [plage])
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 que vous pouvez utiliser:
-
:wqa
Enter ou -
:xa
Enter - Ecrit tous les tampons modifiés et quitte 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!
Enter - Ecrivez 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
Enter - essayez de quitter, mais arrêtez s'il y a des fichiers non enregistrés; -
:qa!
Entrez - quitter sans enregistrer (Rejeter les modifications dans 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 E32: No file name
message de 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 réellement 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 vous voulez). Les raccourcis ne commençant pas par :
tels que ZZ
et ZQ
rapportent aux mappages de touches en mode normal . Vous pouvez les considérer comme des raccourcis.
Le !
La frappe au clavier est parfois utilisée à la fin d'une commande pour forcer son exécution, ce qui permet de supprimer les modifications dans le cas de :q!
. Placer le !
au début de la commande a un sens différent. Par exemple, on peut taper:! :!q
au lieu de :q!
et vim se terminerait par une erreur 127.
Un moyen facile de s'en souvenir est de penser à !
comme moyen d'insister sur l'exécution de quelque chose. Tout comme lorsque vous écrivez: "Je veux quitter!"
Tutoriels interactifs Vim (tels que vimtutor)
vimtutor
est un didacticiel interactif couvrant les aspects les plus fondamentaux de l'édition de texte.
Sur un système de type UNIX, vous pouvez lancer le didacticiel avec:
$ vimtutor
Sous Windows, «Vim tuteur» 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.
Parmi les autres didacticiels interactifs, citons ceux basés sur un navigateur:
- Vim Adventures - Une version de jeu interactive de vimtutor disponible sur le web. Seuls les premiers niveaux sont gratuits.
- Open Vim - Un terminal interactif qui vous apprend les commandes de base avec feedback.
- Vim Genius - Un autre terminal interactif qui comprend également des leçons intermédiaires et avancées, y compris des macros et des arglist.
Enregistrement d'un fichier en lecture seule édité 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 %
Ce que vous pourriez cartographier :w!!
dans votre .vimrc
:
cmap w!! w !sudo tee > /dev/null %
Vous serez présenté une invite comme indiqué dans l'image.
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!
puisque le fichier est toujours ouvert en lecture seule.
Explication de commande
: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:
Suspendre vim
Lorsque vous utilisez vim
partir de la ligne de commande, vous pouvez suspendre vim
et revenir à votre invite sans quitter réellement 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 arriver), lancez l'une des commandes suivantes:
:st
entrer
:sus
entrer
:stop
entrer
:suspend
entrer
Alternativement, sur certains systèmes, en mode Normal ou Visual , l'émission de 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 d' entrer pour éviter, par exemple. :st!
entrez .
Plus tard, lorsque vous souhaitez revenir à votre session vim
, si vous n'avez pas suspendu d'autres travaux, la publication de ce qui suit restaurera vim en tant que tâche de premier plan.
fg
entrer
Sinon , vous devrez trouver votre vim
ID d'emploi de sessions en émettant des jobs
entrent et mettant en avant les emplois correspondant fg %[job ID]
entrer par exemple. fg %1
entrée .
Les bases
Exécutez des tutoriels interactifs vim autant de fois que nécessaire pour vous familiariser avec les bases.
Vim dispose de plusieurs modes, par exemple mode normal, mode insertion et mode ligne de commande .
Le mode normal est pour l'édition et la navigation du texte. Dans ce mode, h
, j
, k
et l
correspondent aux touches du curseur ←
, ↓
, ↑
et →
. La plupart des commandes en mode normal peuvent être précédées d'un "count", par exemple 3j
descend de 3 lignes.
Le mode d'insertion permet d'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 fermeture 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:
Commander | La description |
---|---|
i | (insert) passe en mode insertion avant la position actuelle du curseur |
I | passe en mode insertion avant le premier caractère imprimable de la ligne en cours |
a | (append) passe en mode insertion après la position actuelle du curseur |
A | passe en mode insertion après le dernier caractère imprimable de la ligne en cours |
x | supprimer le caractère à la position actuelle du curseur |
X | supprimer le caractère à gauche de 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 | replace - entre le mode de remplacement pour un caractère. Le prochain caractère que vous tapez remplacera le caractère sous le curseur. |
R | entre en mode de remplacement indéfiniment. Chaque caractère que vous tapez remplace le caractère sous le curseur et fait avancer le curseur de un. |
s | substitute - supprime le caractère à la position actuelle du curseur puis passe en mode insertion |
S | efface la ligne actuelle sur laquelle se trouve le curseur et passe en mode insertion |
<Esc> , <Cc> | quitter le mode insertion et revenir au mode normal |
u | annuler |
<Cr> | refaire |
dd , dw , dl , d$ | couper la ligne en cours, du curseur au mot suivant ou le caractère, la position actuelle à la fin de la ligne en cours respectivement, note: D est l'équivalent de d$ |
cc , cw , cl | changer la ligne actuelle, du curseur au mot suivant ou au caractère, respectivement |
yy , yw , yl , y$ | yank ("copier") la ligne courante, 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 celle en cours et entrer en mode insertion |
:w | écrire le tampon actuel sur le disque |
:q! , ZQ | quitter sans écrire |
:x :wq , ZZ | écrire et quitter |
:help | ouvrir une fenêtre avec le fichier d'aide |
:help {subject} | montrer de l'aide pour un sujet spécifique |
qz | Commencez à enregistrer les 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é pour des raisons de commodité. En savoir plus: Macros |
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 que les modifications sont validées par l'enregistrement. Le nom du fichier d'échange est généralement le nom du fichier en cours de modification précédé d'un .
et avec un suffixe .swp
(vous pouvez le voir avec :sw
).
Donc, si votre processus vim se termine avant que vous ayez eu la possibilité de sauvegarder 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 éditez, utilisez:
$ vi -r myFile
pour récupérer les modifications non validées.
Si un fichier d'échange existe, vim devrait vous demander quand même 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é. N'oubliez donc pas de supprimer le fichier d'échange si vous êtes satisfait de la récupération.