2003-01-19 20:50:02 +01:00
|
|
|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
|
|
|
<!DOCTYPE html
|
|
|
|
|
PUBLIC "-//ENS/Tuteurs//DTD TML 1//EN"
|
|
|
|
|
"tuteurs://DTD/tml.dtd">
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<title>Vim</title>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<h1>Vim</h1>
|
|
|
|
|
|
|
|
|
|
<div class="resume">
|
|
|
|
|
<p>
|
|
|
|
|
Vim est un <20>diteur de textes difficile <20> prendre en main, mais extr<74>mement
|
|
|
|
|
puissant. Il s'agit d'un des nombreux h<>ritiers (moraux) de l'historique Vi
|
|
|
|
|
des Unix ancestraux, et c'est dans cette famille probablement le plus
|
|
|
|
|
puissant. L'essentiel de ce qui sera dit ici sera aussi valable pour les
|
2007-07-17 12:01:59 +02:00
|
|
|
|
autres, mais pas tout<75>; la documentation de Vim pr<70>cise pour chaque
|
2003-01-19 20:50:02 +01:00
|
|
|
|
commande si elle est sp<73>cifique ou pas.
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
2003-03-27 16:34:53 +01:00
|
|
|
|
<h2>Concepts de base</h2>
|
|
|
|
|
|
|
|
|
|
<h3>Les deux modes</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vi poss<73>de deux modes. En fait, ce n'est pas vrai, il en poss<73>de plus, et
|
|
|
|
|
Vim encore plus, mais il y en a deux qui sont plus importants que les autres
|
|
|
|
|
pour comprendre le fonctionnement. L'un de ces modes s'appelle le <em>mode
|
2007-07-17 12:01:59 +02:00
|
|
|
|
insertion</em><3E>: c'est dans ce mode-l<> qu'on tape l'essentiel du texte. La
|
2003-03-27 16:34:53 +01:00
|
|
|
|
particularit<EFBFBD> de Vi est que ce mode propose tr<74>s peu de fonctions de
|
|
|
|
|
manipulation du texte (recherche, copier-coller, sauvegarde). En effet, la
|
2007-07-17 12:01:59 +02:00
|
|
|
|
manipulation du texte se fait en <em>mode normal</em><3E>: dans ce mode, <20>
|
2003-03-27 16:34:53 +01:00
|
|
|
|
peu pr<70>s tous les caract<63>res ont une signification et d<>clenchent des
|
|
|
|
|
modifications du texte ou un d<>placement du curseur.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Il est possible, avec Vi, de d<>finir de nouvelles touches pour des actions.
|
|
|
|
|
Quand on d<>bute, il est tentant de d<>finir des touches pour les actions les
|
|
|
|
|
plus fr<66>quentes (sauver, rechercher, quitter, copier, coller), et de rester
|
|
|
|
|
tout le temps en mode insertion. L'usage montre que c'est en g<>n<EFBFBD>ral une
|
2007-07-17 12:01:59 +02:00
|
|
|
|
mauvaise id<69>e<EFBFBD>: une fois l'habitude des deux modes prises, et l'automatisme
|
2003-03-27 16:34:53 +01:00
|
|
|
|
du changement de mode connu des doigts, l'efficacit<69> cro<72>t avec
|
|
|
|
|
l'utilisation des commandes <20>volu<6C>es. Autant prendre l'habutude rapidement
|
|
|
|
|
donc.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<div class="encadre">
|
|
|
|
|
<p>
|
|
|
|
|
On revient en mode normal avec la touche <code>Escape</code>
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Suivant la configuration, le changement peut ne prendre effet qu'au moment
|
|
|
|
|
o<EFBFBD> la touche suivante est tap<61>e. En cas de probl<62>me, <kbd>Ctrl-C</kbd>
|
|
|
|
|
ram<EFBFBD>ne <em>toujours</em> en mode normal.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Action et d<>placement</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Beaucoup de commandes de Vi (en mode normal, donc) servent <20> d<>placer le
|
|
|
|
|
curseur. Vers la droite ou la gauche, le haut et le bas bien s<>r, mais aussi
|
|
|
|
|
de paragraphe en paragraphe, de mot en mot, en sautant <20> des marques
|
|
|
|
|
pr<EFBFBD>d<EFBFBD>finies ou en recherchant rapidement un caract<63>re donn<6E>, etc.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vi a aussi des commandes pour supprimer, copier, ou d'autres plus exotiques,
|
|
|
|
|
comme passer en majuscules. C'est bien beau, mais supprimer ou copier
|
2007-07-17 12:01:59 +02:00
|
|
|
|
quoi<EFBFBD>? Faut-il une commande pour supprimer un mot, une autre pous supprimer
|
|
|
|
|
une ligne, encore une autre pour supprimer un paragraphe, etc.<2E>? L<>, on
|
|
|
|
|
d<EFBFBD>couvre un des aspects les plus astucieux de Vi<56>: les commandes d'action
|
2003-03-27 16:34:53 +01:00
|
|
|
|
d<EFBFBD>finissent ce qu'il y a <20> faire, mais attendent ensuite une commande de
|
|
|
|
|
d<EFBFBD>placement. L'action est alors appliqu<71>e <20> tout le texte parcouru par le
|
|
|
|
|
curseur dans le d<>placement.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Par exemple la commande <kbd>w</kbd> avance jusqu'au mot suivant, la
|
|
|
|
|
commande <kbd>d</kbd> est celle pour effacer. Alors <kbd>dw</kbd> supprime
|
|
|
|
|
tout du curseur au d<>but du mot suivant.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Avec ce syst<73>me, conna<6E>tre n commandes de d<>placement et m commandes
|
|
|
|
|
d'action se conjuguent en n<>m possibilit<69>s de manipulations diff<66>rentes.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<h2>Principales commandes</h2>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Voici un tableau r<>capitulant les principales commandes de Vim. Les
|
2007-07-17 12:01:59 +02:00
|
|
|
|
commandes marqu<71>es <20><>action<6F><6E> attendent une commande de d<>placement pour
|
2003-03-27 16:34:53 +01:00
|
|
|
|
agir (cette d<>nomination n'est pas standard), et agissent alors sur le texte
|
|
|
|
|
toucert par le d<>placement ainsi d<>sign<67>. Certains des termes utilis<69>s dans
|
|
|
|
|
ce tableau seront expliqu<71>s un peu plus loin. Cette liste n'est pas
|
|
|
|
|
exhaustive du tout.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<table class="tableau">
|
|
|
|
|
<tr><th>Commande</th><th>Sens</th><th>Type</th><th>Effet</th></tr>
|
|
|
|
|
<tr><td><kbd>i</kbd></td><td>insert</td><td></td><td>passe en mode insertion</td></tr>
|
|
|
|
|
<tr><td><kbd>a</kbd></td><td>append</td><td></td><td>passe en mode insertion en faisant avancer le curseur</td></tr>
|
|
|
|
|
<tr><td><kbd>o</kbd></td><td>open</td><td></td><td>passe en mode insertion en cr<63>ant une nouvelle ligne sous le curseur</td></tr>
|
|
|
|
|
<tr><td><kbd>O</kbd></td><td>open</td><td></td><td>passe en mode insertion en cr<63>ant une nouvelle ligne au dessus du curseur</td></tr>
|
|
|
|
|
<tr><td><kbd>R</kbd></td><td>replace</td><td></td><td>passe en mode remplacement</td></tr>
|
|
|
|
|
<tr><td><kbd>A</kbd></td><td></td><td></td><td>passe en mode insertion en allant <20> la fin de la ligne</td></tr>
|
|
|
|
|
<tr><td><kbd>I</kbd></td><td></td><td></td><td>passe en mode insertion en allant au d<>but de la ligne</td></tr>
|
|
|
|
|
<tr><td><kbd>v</kbd></td><td>visual</td><td></td><td>passe en mode visuel</td></tr>
|
|
|
|
|
<tr><td><kbd>V</kbd></td><td></td><td></td><td>passe en mode visuel par ligne</td></tr>
|
|
|
|
|
<tr><td><kbd>Ctrl-V</kbd></td><td></td><td></td><td>passe en mode visuel par bloc</td></tr>
|
|
|
|
|
|
|
|
|
|
<tr><td><kbd>h</kbd></td><td></td><td>d<>placement</td><td>d<>place le curseur vers la gauche</td></tr>
|
|
|
|
|
<tr><td><kbd>j</kbd></td><td></td><td>d<>placement</td><td>d<>place le curseur vers le bas</td></tr>
|
|
|
|
|
<tr><td><kbd>k</kbd></td><td></td><td>d<>placement</td><td>d<>place le curseur vers le haut</td></tr>
|
|
|
|
|
<tr><td><kbd>l</kbd></td><td></td><td>d<>placement</td><td>d<>place le curseur vers la droite</td></tr>
|
|
|
|
|
<tr><td><kbd>w</kbd></td><td>word</td><td>d<>placement</td><td>avance d'un mot</td></tr>
|
|
|
|
|
<tr><td><kbd>b</kbd></td><td>back</td><td>d<>placement</td><td>recule d'un mot</td></tr>
|
|
|
|
|
<tr><td><kbd>e</kbd></td><td>end</td><td>d<>placement</td><td>avance jusqu'<27> la fin d'un mot</td></tr>
|
|
|
|
|
<tr><td><kbd>W</kbd></td><td></td><td>d<>placement</td><td>avance d'un MOT</td></tr>
|
|
|
|
|
<tr><td><kbd>B</kbd></td><td></td><td>d<>placement</td><td>recule d'un MOT</td></tr>
|
|
|
|
|
<tr><td><kbd>E</kbd></td><td></td><td>d<>placement</td><td>avance jusqu'<27> la fin d'un MOT</td></tr>
|
|
|
|
|
<tr><td><kbd>f<i>x</i></kbd></td><td>forward</td><td>d<>placement</td><td>avance jusqu'au prochain <i>x</i></td></tr>
|
|
|
|
|
<tr><td><kbd>F<i>x</i></kbd></td><td></td><td>d<>placement</td><td>recule jusqu'au <i>x</i> pr<70>c<EFBFBD>dent</td></tr>
|
|
|
|
|
<tr><td><kbd>t<i>x</i></kbd></td><td></td><td>d<>placement</td><td>avance jusqu'<27> juste avant le prochain <i>x</i></td></tr>
|
|
|
|
|
<tr><td><kbd>T<i>x</i></kbd></td><td></td><td>d<>placement</td><td>recule jusqu'<27> juste apr<70>s le <i>x</i> pr<70>c<EFBFBD>dent</td></tr>
|
|
|
|
|
<tr><td><kbd>gg</kbd></td><td></td><td>d<>placement</td><td>va au d<>but du texte</td></tr>
|
|
|
|
|
<tr><td><kbd>G</kbd></td><td></td><td>d<>placement</td><td>va <20> la fin du texte</td></tr>
|
|
|
|
|
<tr><td><kbd>$</kbd></td><td></td><td>d<>placement</td><td>va <20> la fin de la ligne</td></tr>
|
|
|
|
|
<tr><td><kbd>0</kbd></td><td></td><td>d<>placement</td><td>va au d<>but de la ligne</td></tr>
|
|
|
|
|
<tr><td><kbd>{</kbd></td><td></td><td>d<>placement</td><td>va au d<>but du paragraphe</td></tr>
|
|
|
|
|
<tr><td><kbd>}</kbd></td><td></td><td>d<>placement</td><td>va <20> la fin du paragraphe</td></tr>
|
|
|
|
|
<tr><td><kbd>(</kbd></td><td></td><td>d<>placement</td><td>va au d<>but de la phrase</td></tr>
|
|
|
|
|
<tr><td><kbd>)</kbd></td><td></td><td>d<>placement</td><td>va <20> la fin de la phrase</td></tr>
|
|
|
|
|
<tr><td><kbd>n</kbd></td><td>next</td><td>d<>placement</td><td>continue une recherche</td></tr>
|
|
|
|
|
<tr><td><kbd>N</kbd></td><td></td><td>d<>placement</td><td>continue une recherche, en sens inverse</td></tr>
|
|
|
|
|
|
|
|
|
|
<tr><td><kbd>u</kbd></td><td>undo</td><td></td><td>annule la derni<6E>re action</td></tr>
|
|
|
|
|
<tr><td><kbd>Ctrl-R</kbd></td><td>redo</td><td></td><td>refait la derni<6E>re action annul<75>e</td></tr>
|
|
|
|
|
<tr><td><kbd>.</kbd></td><td>redo</td><td></td><td>r<>p<EFBFBD>te la derni<6E>re op<6F>ration</td></tr>
|
2007-07-17 12:01:59 +02:00
|
|
|
|
<tr><td><kbd>x</kbd></td><td></td><td></td><td>supprime un caract<63>re vers la droite (<28><>delete<74><65>)</td></tr>
|
|
|
|
|
<tr><td><kbd>X</kbd></td><td></td><td></td><td>supprime un caract<63>re vers la gauche (<28><>backspace<63><65>)</td></tr>
|
2003-03-27 16:34:53 +01:00
|
|
|
|
<tr><td><kbd>s</kbd></td><td>substitute</td><td></td><td>supprime un caract<63>re et passe en mode insertion</td></tr>
|
|
|
|
|
<tr><td><kbd>r<i>x</i></kbd></td><td>replace</td><td></td><td>remplace un caract<63>re par <i>x</i></td></tr>
|
|
|
|
|
<tr><td><kbd>p</kbd></td><td>paste</td><td></td><td>colle un registre apr<70>s le curseur</td></tr>
|
|
|
|
|
<tr><td><kbd>P</kbd></td><td></td><td></td><td>colle un registre avant le curseur</td></tr>
|
|
|
|
|
<tr><td><kbd>~</kbd></td><td></td><td></td><td>passe un caract<63>re de majuscule en minuscule ou l'inverse</td></tr>
|
|
|
|
|
<tr><td><kbd>/</kbd></td><td></td><td></td><td>fais une recherche</td></tr>
|
|
|
|
|
<tr><td><kbd>?</kbd></td><td></td><td></td><td>fais une recherche vers l'arri<72>re</td></tr>
|
|
|
|
|
<tr><td><kbd>*</kbd></td><td></td><td></td><td>cherche le mot sous le curseur</td></tr>
|
|
|
|
|
<tr><td><kbd>#</kbd></td><td></td><td></td><td>cherche le mot sous le curseur vers l'arri<72>re</td></tr>
|
|
|
|
|
|
|
|
|
|
<tr><td><kbd>d</kbd></td><td>delete</td><td>action</td><td>supprime</td></tr>
|
|
|
|
|
<tr><td><kbd>c</kbd></td><td>change</td><td>action</td><td>supprime et passe en mode insertion</td></tr>
|
|
|
|
|
<tr><td><kbd>y</kbd></td><td>yank</td><td>action</td><td>copie dans un registre</td></tr>
|
|
|
|
|
<tr><td><kbd>gu</kbd></td><td></td><td>action</td><td>passe en minuscules</td></tr>
|
|
|
|
|
<tr><td><kbd>gU</kbd></td><td></td><td>action</td><td>passe en majuscules</td></tr>
|
|
|
|
|
<tr><td><kbd>g?</kbd></td><td></td><td>action</td><td>passe en rot13</td></tr>
|
|
|
|
|
<tr><td><kbd><</kbd></td><td></td><td>action</td><td>d<>cale vers la gauche</td></tr>
|
|
|
|
|
<tr><td><kbd>></kbd></td><td></td><td>action</td><td>d<>cale vers la droite</td></tr>
|
|
|
|
|
<tr><td><kbd>gq</kbd></td><td></td><td>action</td><td>recoupe les lignes</td></tr>
|
|
|
|
|
<tr><td><kbd>=</kbd></td><td></td><td>action</td><td>met en forme un programme</td></tr>
|
|
|
|
|
|
|
|
|
|
<tr><td><kbd>"</kbd><i>x</i></td><td></td><td></td><td>s<>lectionne le registre <i>x</i></td></tr>
|
|
|
|
|
<tr><td><kbd>m</kbd><i>x</i></td><td></td><td></td><td>pose la marque <i>x</i></td></tr>
|
|
|
|
|
<tr><td><kbd>'</kbd><i>x</i></td><td></td><td>d<>placement</td><td>va <20> la marque <i>x</i> (par ligne)</td></tr>
|
|
|
|
|
<tr><td><kbd>`</kbd><i>x</i></td><td></td><td>d<>placement</td><td>va <20> la marque <i>x</i> (par caract<63>re)</td></tr>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
La plupart des commandes peuvent <20>tre pr<70>c<EFBFBD>d<EFBFBD>es d'un nombre, tap<61>
|
2007-07-17 12:01:59 +02:00
|
|
|
|
directement avec les chiffres<65>: ce nombre va alors en g<>n<EFBFBD>ral multiplier
|
2003-03-27 16:34:53 +01:00
|
|
|
|
l'action. Ainsi, puisque <kbd>w</kbd> avance d'un mot, <kbd>42</kbd> avance
|
|
|
|
|
de 42 mots.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Le mode remplacement est similaire au mode insertion, mais les caract<63>res
|
|
|
|
|
viennent remplacer ceux qui se trouvaient auparavant. Les modes visuels sont
|
|
|
|
|
des modes utilis<69>s pour s<>lectionner du texte, nous verrons leur fonction
|
|
|
|
|
plus en d<>tail plus bas.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Un mot est une suite de lettres et de chiffres, ou une suite de signes
|
2007-07-17 12:01:59 +02:00
|
|
|
|
autres, except<70>s les espaces. Un <20><>MOT<4F><54> est une suite de signe qui ne
|
2003-03-27 16:34:53 +01:00
|
|
|
|
sont pas des espaces. Ainsi, <code>tuteurs@clipper.ens.fr</code> est un seul
|
|
|
|
|
MOT, form<72> de sept MOTS.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Quand on r<>p<EFBFBD>te une touche correspondant <20> une action, le r<>sultat est
|
|
|
|
|
souvent d'agir sur la ligne enti<74>re. Ainsi <kbd>dd</kbd> supprime une ligne.
|
|
|
|
|
Quand on la met en majuscule, elle agit souvent de la position du curseur <20>
|
|
|
|
|
la fin de la ligne (comme si la commande de d<>placement <20>tait <kbd>$</kbd>.
|
|
|
|
|
Ainsi <kbd>D</kbd> supprime jusqu'<27> la fin de la ligne.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Certaines commandes de d<>placement sont dites <em>horizontales</em> alors
|
|
|
|
|
que d'autres sont <em>verticales</em>. Quand une action est suivie d'un
|
|
|
|
|
d<EFBFBD>placement vertical, elle agit par lignes enti<74>res (par exemple
|
|
|
|
|
<kbd>dj</kbd> supprime la ligne o<> est le curseur et la ligne en dessous, en
|
|
|
|
|
entier). Cette distinction peut para<72>tre difficile <20> saisir, mais <20> l'usage
|
|
|
|
|
le comportement est tel qu'on peut s'y attendre naturellement.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h2>Op<4F>rations usuelles</h2>
|
|
|
|
|
|
|
|
|
|
<h3>Copier-coller, registres</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vim poss<73>de un certain nombre de registres qui peuvent contenir du texte.
|
|
|
|
|
Ils servenr pour les op<6F>rations de copier-coller. Lors qu'une op<6F>ration
|
|
|
|
|
supprime une portion de texte, celle-ci est automatiquement copi<70>e dans le
|
|
|
|
|
registre s<>lectionn<6E>. La commande <kbd>y</kbd> sert <20> copier du texte dans
|
|
|
|
|
un registre sans le supprimer.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Si on ne pr<70>cise rien, c'est le registre <code>"</code> qui est s<>lectionn<6E>.
|
|
|
|
|
La commande <kbd>"</kbd> permet de choisir le registre pour la prochaine
|
|
|
|
|
op<EFBFBD>ration. Il y a 26 registres g<>n<EFBFBD>riques portant les lettres de
|
|
|
|
|
<code>a</code> <20> <code>z</code>. Sion utilise une lettre en majuscule, le
|
|
|
|
|
texte copi<70> o<> coup<75> va s'ajouter au contenu du registre au lieu de le
|
|
|
|
|
remplacer. Il est donc possible de maintenir 26 bouts de textes qu'on peut
|
|
|
|
|
ensuite coller n'importe o<>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
C'est la commande <kbd>p</kbd> ou <kbd>P</kbd> qui sert <20> coller le contenu
|
|
|
|
|
d'un registre. Comme les autres, elle peut <20>tre pr<70>c<EFBFBD>d<EFBFBD>e de <kbd>"</kbd>
|
|
|
|
|
pour s<>lectionner le registre qui doit <20>tre coll<6C>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
<EFBFBD> chaque fois qu'un registre est modifi<66>, le registre <code>1</code> est
|
|
|
|
|
rempli <20>galement, tandis que son ancien contenu est transf<73>r<EFBFBD> dans le
|
|
|
|
|
registre <code>2</code>, dont l'ancien contenu est <20> son tour transf<73>r<EFBFBD> dans
|
|
|
|
|
le registre <code>3</code>, et ainsi de suite jusqu'<27> 9.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
2007-07-17 12:01:59 +02:00
|
|
|
|
Attention. Un registre se souvnet de la mani<6E>re dont il a <20>t<EFBFBD> rempli<6C>: par
|
2003-03-27 16:34:53 +01:00
|
|
|
|
une action verticale ou horizontale. Lors du collage, il s'ins<6E>re de la
|
2007-07-17 12:01:59 +02:00
|
|
|
|
m<EFBFBD>me mani<6E>re<72>: un registre copi<70> verticalement s'ins<6E>rera sur des lignes
|
2003-03-27 16:34:53 +01:00
|
|
|
|
enti<EFBFBD>res, quelle que soit la position du curseur. <20>a marche <20>galement pour
|
|
|
|
|
des copies faites en mode visuel par bloc.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Le mode visuel</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Le move visuel, ou plut<75>t les modes visuels, permettent de s<>lectionner du
|
|
|
|
|
texte. Une commande de modification faite en mode visuel va agir sur la zone
|
|
|
|
|
s<EFBFBD>lectionn<EFBFBD>e au lieu d'un seul caract<63>re, ou d'attendre un d<>placement. Pour
|
|
|
|
|
les d<>placements, le mode visuel fonctionne comme le mode commande.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Le mode visuel normal s<>lectionne une zone qui va pr<70>cis<69>ment de l'endroit
|
|
|
|
|
o<EFBFBD> se trouvait le curseur quand on a appuy<75> sur <kbd>v</kbd> <20> la position
|
|
|
|
|
curseur courante. Il est donc similaire <20> une commande de d<>placement
|
|
|
|
|
<em>horizontal</em>. Le mode visuel par ligne s<>lectionne des lignes
|
|
|
|
|
enti<EFBFBD>res, il est donc similaire <20> une commande de d<>placement
|
|
|
|
|
<em>vertical</em>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Le mode visuel par bloc s<>lectionne un rectangle de texte, ind<6E>pendemment
|
|
|
|
|
des coupures des lignes. Ceci peut servir pour des constructions en colonnes
|
|
|
|
|
ou des alignements. Dans ce mode, les commandes de remplacement
|
|
|
|
|
(<kbd>c</kbd> et <kbd>s</kbd>) et d'insertion (<kbd>I</kbd> et <kbd>A</kbd>
|
|
|
|
|
au lieu de <kbd>i</kbd> et <kbd>a</kbd>) ont un fonctionnement
|
2007-07-17 12:01:59 +02:00
|
|
|
|
particulier<EFBFBD>: le texte tap<61> sur la premi<6D>re ligne va <20>tre r<>p<EFBFBD>t<EFBFBD> de la m<>me
|
|
|
|
|
mani<EFBFBD>re sur toutes les lignes. Attention<6F>: pour que <20>a marche il ne faut
|
|
|
|
|
pas utiliser de d<>placement du curseur pendant l'insertion. Exemple<6C>: pour
|
2003-03-27 16:34:53 +01:00
|
|
|
|
ajouter un <code>></code> au d<>but de toutes les lignes d'un bout de
|
|
|
|
|
texte, se placer au d<>but, faire <kbd>Ctrl-V</kbd>, descendre jusqu'<27> la
|
|
|
|
|
derni<EFBFBD>re ligne, faire <kbd>I></kbd>, puis <kbd>Escape</kbd>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Les marques</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Vim est capable de poser des marques dans le texte, afin d'y revenir plus
|
|
|
|
|
tard facilement. On pose une marque avec <kbd>m</kbd> suivi d'une lettre. Il
|
|
|
|
|
y a donc 26 marques librement utilisables.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
On peut aller <20> une marque ainsi pos<6F>e avec la commande <kbd>'</kbd> suivie
|
|
|
|
|
de la lettre, ou <kbd>`</kbd> pour un d<>placement horizontal. Si la lettre
|
|
|
|
|
est donn<6E>e en majuscule, le saut peut faire changer de fichier si la marque
|
|
|
|
|
est dans un autre.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Il existe deux marques sp<73>ciales, <kbd><</kbd>et <kbd>></kbd>, qui
|
|
|
|
|
d<EFBFBD>signent respectivement le d<>but et la fin du dernier mode visuel. Elles
|
|
|
|
|
sont surtout utiles pour d<>signer un intervalle en ligne de commande.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h2>La ligne de commande</h2>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Pour les op<6F>rations plus complexes, en particulier celles qui agissent sur
|
|
|
|
|
la totalit<69> du texte, Vim utilise une ligne de commande. Si on tape
|
|
|
|
|
<kbd>:</kbd> en mode normal, on peut taper une commande enti<74>re, qui ne sera
|
|
|
|
|
<EFBFBD>valu<EFBFBD>e que lorsqu'on validera avec entr<74>e. Avec Vim (et pas avec Vi), la
|
|
|
|
|
ligne de commande est compl<70>tement <20>ditable, et comporte un hitorique.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
La plupart des commandes peuvent s'abr<62>ger. Les plus utilis<69>es peuvent
|
|
|
|
|
descendre jusqu'<27> une seule lettre.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Sauver, charger, quitter</h3>
|
|
|
|
|
|
2003-06-05 18:17:14 +02:00
|
|
|
|
<table class="tableau">
|
|
|
|
|
<tr>
|
|
|
|
|
<th>Commande</th><th>Abbr<62>viation</th><th>Effet</th>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><code>:write</code></td><td><code>:w</code></td>
|
|
|
|
|
<td>sauve le fichier en cours d'<27>dition</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><code>:write <i>fichier</i></code></td><td><code>:w</code></td>
|
|
|
|
|
<td><3E>crit le texte dans le fichier indiqu<71></td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><code>:saveas <i>fichier</i></code></td><td><code>:sav</code></td>
|
|
|
|
|
<td>sauve le fichier sous un nouveau nom</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><code>:edit <i>fichier</i></code></td><td><code>:ed</code></td>
|
|
|
|
|
<td><3E>dite un nouveau fichier</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><code>:quit</code></td><td><code>:q</code></td>
|
|
|
|
|
<td>quitte</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><code>:exit</code></td><td><code>:x</code></td>
|
|
|
|
|
<td>sauve si n<>cessaire et quitte</td>
|
|
|
|
|
</tr>
|
|
|
|
|
<tr>
|
|
|
|
|
<td><code>:wq</code></td><td></td>
|
|
|
|
|
<td>sauve et quitte</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
La diff<66>rence entre <code>:w</code> avec un nom de fichier et
|
|
|
|
|
<code>:save</code>, c'est le nom qui sera utilis<69> pour les <code>:w</code>
|
2007-07-17 12:01:59 +02:00
|
|
|
|
suivants<EFBFBD>: l'ancien nom dans le premier cas, le nouveau dans le second.
|
2003-06-05 18:17:14 +02:00
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Selon la configuration de Vim, ouvrir un nouveau fichier va soit fermer le
|
|
|
|
|
fichier en cours d'<27>dition (avec confirmation, <20>videmment) soit simplement
|
|
|
|
|
le cacher, tout en permettant d'y revenir.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
On peut insister pour quitter sans sauver, ou pour sauver sur un fichier qui
|
|
|
|
|
existe d<>j<EFBFBD>, en ajoutant <code>!</code> <20> la fin de la commande, ce qui
|
|
|
|
|
donne <code>:w!</code> et <code>:q!</code>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<h3>Les recherches et remplacements</h3>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Les recherches ne se font pas en ligne de commande <20> proprement parler, mais
|
|
|
|
|
le comportement de Vim y est le m<>me. Une recherche se fait avec la touche
|
|
|
|
|
<code>/</code>. Vim passe alors dans un mode proche de la ligne de commande,
|
|
|
|
|
et attend qu'on saisisse une expression rationnelle. On valide par entr<74>e,
|
|
|
|
|
et Vim saute <20> la premire occurence. On navigue alors entre les diff<66>rentes
|
|
|
|
|
occurences avec <code>n</code> (comme <em>next</em>) et <code>N</code>.
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
Selon la configuration, Vim peut afficher la premi<6D>re occurence au fur et <20>
|
2007-07-17 12:01:59 +02:00
|
|
|
|
mesure de la saisie de l'expression cherch<63>e. Attention toutefois<69>: quand
|
2003-06-05 18:17:14 +02:00
|
|
|
|
on a trouv<75>, il faut bien valider, sinon on se retrouve au point de d<>part.
|
|
|
|
|
</p>
|
|
|
|
|
<!--Toujours selon la configuraiton, -->
|
2003-01-19 20:50:02 +01:00
|
|
|
|
|
|
|
|
|
<div class="metainformation">
|
2007-07-17 12:01:59 +02:00
|
|
|
|
Auteur<EFBFBD>: Nicolas George. Derni<6E>re modification le <date value="$Date: 2007-07-17 10:03:30 $"/>.
|
2003-06-05 18:17:14 +02:00
|
|
|
|
<br/>
|
|
|
|
|
to <span style="color: blue">B</span><span style="color: red">e</span> continued
|
2003-01-19 20:50:02 +01:00
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|