970 lines
29 KiB
HTML
970 lines
29 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||
<title>Vim</title>
|
||
<link rel="stylesheet" href="../../tuteurs.css" type="text/css" />
|
||
</head>
|
||
<body>
|
||
<div class="navigation">
|
||
<h1>Tuteurs informatique<br /><a href="../../meta/contact.html">Nous contacter</a></h1>
|
||
<hr />
|
||
<ul class="menu">
|
||
<li>
|
||
<a href="../../meta/charte_graphique.html">Utiliser ce site</a>
|
||
</li>
|
||
<li>
|
||
<a href="../../actualite.html">Actu et stages</a>
|
||
</li>
|
||
<li>
|
||
<a href="../../docs/">Docs à imprimer</a>
|
||
</li>
|
||
<li>
|
||
<a href="../../meta/plan_site.html">Plan du site</a>
|
||
</li>
|
||
<li>
|
||
<a href="../../search.html">Rechercher</a>
|
||
</li>
|
||
</ul>
|
||
<hr />
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="../../">Les tuteurs</a>
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="../">Unix</a>
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="./">Éditeurs</a>
|
||
<ul class="arbre">
|
||
<li>
|
||
<a href="cercles.html">7 Cercles</a>
|
||
</li>
|
||
<li>
|
||
<a href="emacs.html">Emacs</a>
|
||
</li>
|
||
<li>
|
||
<a href="emacs_memo.html">Mémo emacs</a>
|
||
</li>
|
||
<li>
|
||
<a href="nedit.html">NEdit</a>
|
||
</li>
|
||
<li>
|
||
<a href="super_emacs.html">Emacs avancé</a>
|
||
</li>
|
||
<li>
|
||
<a href="unicode.html">Unicode</a>
|
||
</li>
|
||
<li>
|
||
<a href="vim.html" class="actuel">Vim</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
<hr />
|
||
<ul class="menu">
|
||
<li>
|
||
<a href="http://www.eleves.ens.fr/">Serveur des élèves</a>
|
||
</li>
|
||
<li>
|
||
<a href="http://www.ens.fr/">ENS</a>
|
||
</li>
|
||
<li>
|
||
<a href="http://www.spi.ens.fr/">SPI</a>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="corps">
|
||
<h1>Vim</h1>
|
||
<div class="sommaire">
|
||
<ul>
|
||
<li>
|
||
<a href="#s1">Concepts de base</a>
|
||
<ul>
|
||
<li>
|
||
<a href="#s1_1">Les deux modes</a>
|
||
</li>
|
||
<li>
|
||
<a href="#s1_2">Action et déplacement</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<a href="#s2">Principales commandes</a>
|
||
</li>
|
||
<li>
|
||
<a href="#s3">Opérations usuelles</a>
|
||
<ul>
|
||
<li>
|
||
<a href="#s3_1">Copier-coller, registres</a>
|
||
</li>
|
||
<li>
|
||
<a href="#s3_2">Le mode visuel</a>
|
||
</li>
|
||
<li>
|
||
<a href="#s3_3">Les marques</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li>
|
||
<a href="#s4">La ligne de commande</a>
|
||
<ul>
|
||
<li>
|
||
<a href="#s4_1">Sauver, charger, quitter</a>
|
||
</li>
|
||
<li>
|
||
<a href="#s4_2">Les recherches et remplacements</a>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
<div class="resume">
|
||
<p>
|
||
Vim est un éditeur de textes difficile à prendre en main, mais extrê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
|
||
autres, mais pas tout ; la documentation de Vim précise pour chaque
|
||
commande si elle est spécifique ou pas.
|
||
</p>
|
||
</div>
|
||
<h2>
|
||
<a name="s1" id="s1">Concepts de base</a>
|
||
</h2>
|
||
<h3>
|
||
<a name="s1_1" id="s1_1">Les deux modes</a>
|
||
</h3>
|
||
<p>
|
||
Vi possède deux modes. En fait, ce n'est pas vrai, il en possè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
|
||
insertion</em> : c'est dans ce mode-là qu'on tape l'essentiel du texte. La
|
||
particularité de Vi est que ce mode propose très peu de fonctions de
|
||
manipulation du texte (recherche, copier-coller, sauvegarde). En effet, la
|
||
manipulation du texte se fait en <em>mode normal</em> : dans ce mode, à
|
||
peu près tous les caractè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équentes (sauver, rechercher, quitter, copier, coller), et de rester
|
||
tout le temps en mode insertion. L'usage montre que c'est en général une
|
||
mauvaise idée : une fois l'habitude des deux modes prises, et l'automatisme
|
||
du changement de mode connu des doigts, l'efficacité croît avec
|
||
l'utilisation des commandes évolué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ù la touche suivante est tapée. En cas de problème, <kbd>Ctrl-C</kbd>
|
||
ramène <em>toujours</em> en mode normal.
|
||
</p>
|
||
<h3>
|
||
<a name="s1_2" id="s1_2">Action et déplacement</a>
|
||
</h3>
|
||
<p>
|
||
Beaucoup de commandes de Vi (en mode normal, donc) servent à 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 à des marques
|
||
prédéfinies ou en recherchant rapidement un caractère donné, 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
|
||
quoi ? Faut-il une commande pour supprimer un mot, une autre pous supprimer
|
||
une ligne, encore une autre pour supprimer un paragraphe, etc. ? Là, on
|
||
découvre un des aspects les plus astucieux de Vi : les commandes d'action
|
||
définissent ce qu'il y a à faire, mais attendent ensuite une commande de
|
||
déplacement. L'action est alors appliquée à 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ème, connaître n commandes de déplacement et m commandes
|
||
d'action se conjuguent en n×m possibilités de manipulations différentes.
|
||
</p>
|
||
<h2>
|
||
<a name="s2" id="s2">Principales commandes</a>
|
||
</h2>
|
||
<p>
|
||
Voici un tableau récapitulant les principales commandes de Vim. Les
|
||
commandes marquées « action » attendent une commande de déplacement pour
|
||
agir (cette dénomination n'est pas standard), et agissent alors sur le texte
|
||
toucert par le déplacement ainsi désigné. Certains des termes utilisés dans
|
||
ce tableau seront expliqué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é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é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 à 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'à 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'à 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écédent</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<kbd>t<i>x</i></kbd>
|
||
</td>
|
||
<td></td>
|
||
<td>déplacement</td>
|
||
<td>avance jusqu'à 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'à juste après le <i>x</i> précé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 à la fin du texte</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<kbd>$</kbd>
|
||
</td>
|
||
<td></td>
|
||
<td>déplacement</td>
|
||
<td>va à 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 à 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 à 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ère action</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<kbd>Ctrl-R</kbd>
|
||
</td>
|
||
<td>redo</td>
|
||
<td></td>
|
||
<td>refait la dernière action annulée</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<kbd>.</kbd>
|
||
</td>
|
||
<td>redo</td>
|
||
<td></td>
|
||
<td>répète la dernière opération</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<kbd>x</kbd>
|
||
</td>
|
||
<td></td>
|
||
<td></td>
|
||
<td>supprime un caractère vers la droite (« delete »)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<kbd>X</kbd>
|
||
</td>
|
||
<td></td>
|
||
<td></td>
|
||
<td>supprime un caractère vers la gauche (« backspace »)</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<kbd>s</kbd>
|
||
</td>
|
||
<td>substitute</td>
|
||
<td></td>
|
||
<td>supprime un caractè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ère par <i>x</i></td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<kbd>p</kbd>
|
||
</td>
|
||
<td>paste</td>
|
||
<td></td>
|
||
<td>colle un registre aprè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è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è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è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 à 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 à la marque <i>x</i> (par caractère)</td>
|
||
</tr>
|
||
</table>
|
||
<p>
|
||
La plupart des commandes peuvent être précédées d'un nombre, tapé
|
||
directement avec les chiffres : ce nombre va alors en général multiplier
|
||
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ères
|
||
viennent remplacer ceux qui se trouvaient auparavant. Les modes visuels sont
|
||
des modes utilisé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
|
||
autres, exceptés les espaces. Un « MOT » est une suite de signe qui ne
|
||
sont pas des espaces. Ainsi, <code>tuteurs@sas.eleves.ens.fr</code> est un seul
|
||
MOT, formé de sept mots.
|
||
</p>
|
||
<p>
|
||
Quand on répète une touche correspondant à une action, le résultat est
|
||
souvent d'agir sur la ligne entière. Ainsi <kbd>dd</kbd> supprime une ligne.
|
||
Quand on la met en majuscule, elle agit souvent de la position du curseur à
|
||
la fin de la ligne (comme si la commande de déplacement était <kbd>$</kbd>.
|
||
Ainsi <kbd>D</kbd> supprime jusqu'à 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éplacement vertical, elle agit par lignes entières (par exemple
|
||
<kbd>dj</kbd> supprime la ligne où est le curseur et la ligne en dessous, en
|
||
entier). Cette distinction peut paraître difficile à saisir, mais à l'usage
|
||
le comportement est tel qu'on peut s'y attendre naturellement.
|
||
</p>
|
||
<h2>
|
||
<a name="s3" id="s3">Opérations usuelles</a>
|
||
</h2>
|
||
<h3>
|
||
<a name="s3_1" id="s3_1">Copier-coller, registres</a>
|
||
</h3>
|
||
<p>
|
||
Vim possède un certain nombre de registres qui peuvent contenir du texte.
|
||
Ils servent pour les opérations de copier-coller. Lors qu'une opération
|
||
supprime une portion de texte, celle-ci est automatiquement copiée dans le
|
||
registre sélectionné. La commande <kbd>y</kbd> sert à copier du texte dans
|
||
un registre sans le supprimer.
|
||
</p>
|
||
<p>
|
||
Si on ne précise rien, c'est le registre <code>"</code> qui est sélectionné.
|
||
La commande <kbd>"</kbd> permet de choisir le registre pour la prochaine
|
||
opération. Il y a 26 registres génériques portant les lettres de
|
||
<code>a</code> à <code>z</code>. Si on utilise une lettre en majuscule, le
|
||
texte copié où coupé 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ù.
|
||
Par exemple, si on veut copier du texte dans le registre <code>r</code>, on
|
||
tape <kbd>"ry</kbd>.
|
||
</p>
|
||
<p>
|
||
C'est la commande <kbd>p</kbd> ou <kbd>P</kbd> qui sert à coller le contenu
|
||
d'un registre. Comme les autres, elle peut être précédée de <kbd>"</kbd>
|
||
pour sélectionner le registre qui doit être collé.
|
||
Par exemple, si on veut coller le contenu du registre <code>r</code>, on
|
||
tape <kbd>"rp</kbd>.
|
||
</p>
|
||
<p>
|
||
À chaque fois qu'un registre est modifié, le registre <code>1</code> est
|
||
rempli également, tandis que son ancien contenu est transféré dans le
|
||
registre <code>2</code>, dont l'ancien contenu est à son tour transféré dans
|
||
le registre <code>3</code>, et ainsi de suite jusqu'à 9.
|
||
</p>
|
||
<p>
|
||
Attention. Un registre se souvient de la manière dont il a été rempli : par
|
||
une action verticale ou horizontale. Lors du collage, il s'insère de la
|
||
même manière : un registre copié verticalement s'insérera sur des lignes
|
||
entières, quelle que soit la position du curseur. Ça marche également pour
|
||
des copies faites en mode visuel par bloc.
|
||
</p>
|
||
<h3>
|
||
<a name="s3_2" id="s3_2">Le mode visuel</a>
|
||
</h3>
|
||
<p>
|
||
Le mode visuel, ou plutôt les modes visuels, permettent de sélectionner du
|
||
texte. Une commande de modification faite en mode visuel va agir sur la zone
|
||
sélectionnée au lieu d'un seul caractè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écisément de l'endroit
|
||
où se trouvait le curseur quand on a appuyé sur <kbd>v</kbd> à la position
|
||
curseur courante. Il est donc similaire à une commande de déplacement
|
||
<em>horizontal</em>. Le mode visuel par ligne sélectionne des lignes
|
||
entières, il est donc similaire à une commande de déplacement
|
||
<em>vertical</em>.
|
||
</p>
|
||
<p>
|
||
Le mode visuel par bloc sélectionne un rectangle de texte, indé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
|
||
particulier : le texte tapé sur la première ligne va être répété de la même
|
||
manière sur toutes les lignes. Attention : pour que ça marche il ne faut
|
||
pas utiliser de déplacement du curseur pendant l'insertion. Exemple : pour
|
||
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'à la
|
||
dernière ligne, faire <kbd>I></kbd>, puis <kbd>Escape</kbd>.
|
||
</p>
|
||
<h3>
|
||
<a name="s3_3" id="s3_3">Les marques</a>
|
||
</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 à une marque ainsi posée avec la commande <kbd>'</kbd> suivie
|
||
de la lettre, ou <kbd>`</kbd> pour un déplacement horizontal. Si la lettre
|
||
est donnée en majuscule, le saut peut faire changer de fichier si la marque
|
||
est dans un autre.
|
||
</p>
|
||
<p>
|
||
Il existe deux marques spéciales, <kbd><</kbd> et <kbd>></kbd>, qui
|
||
dé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>
|
||
<a name="s4" id="s4">La ligne de commande</a>
|
||
</h2>
|
||
<p>
|
||
Pour les opérations plus complexes, en particulier celles qui agissent sur
|
||
la totalité du texte, Vim utilise une ligne de commande. Si on tape
|
||
<kbd>:</kbd> en mode normal, on peut taper une commande entière, qui ne sera
|
||
évaluée que lorsqu'on validera avec entrée. Avec Vim (et pas avec Vi), la
|
||
ligne de commande est complètement éditable, et comporte un hitorique.
|
||
</p>
|
||
<p>
|
||
La plupart des commandes peuvent s'abréger. Les plus utilisées peuvent
|
||
descendre jusqu'à une seule lettre.
|
||
</p>
|
||
<h3>
|
||
<a name="s4_1" id="s4_1">Sauver, charger, quitter</a>
|
||
</h3>
|
||
<table class="tableau">
|
||
<tr>
|
||
<th>Commande</th>
|
||
<th>Abbréviation</th>
|
||
<th>Effet</th>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<code>:write</code>
|
||
</td>
|
||
<td>
|
||
<code>:w</code>
|
||
</td>
|
||
<td>sauve le fichier en cours d'édition</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<code>:write <i>fichier</i></code>
|
||
</td>
|
||
<td>
|
||
<code>:w</code>
|
||
</td>
|
||
<td>écrit le texte dans le fichier indiqué</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>é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érence entre <code>:w</code> avec un nom de fichier et
|
||
<code>:save</code>, c'est le nom qui sera utilisé pour les <code>:w</code>
|
||
suivants : l'ancien nom dans le premier cas, le nouveau dans le second.
|
||
</p>
|
||
<p>
|
||
Selon la configuration de Vim, ouvrir un nouveau fichier va soit fermer le
|
||
fichier en cours d'édition (avec confirmation, é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à, en ajoutant <code>!</code> à la fin de la commande, ce qui
|
||
donne <code>:w!</code> et <code>:q!</code>.
|
||
</p>
|
||
<h3>
|
||
<a name="s4_2" id="s4_2">Les recherches et remplacements</a>
|
||
</h3>
|
||
<p>
|
||
Les recherches ne se font pas en ligne de commande à 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ée,
|
||
et Vim saute à la premire occurence. On navigue alors entre les différentes
|
||
occurences avec <code>n</code> (comme <em>next</em>) et <code>N</code>.
|
||
</p>
|
||
<p>
|
||
Selon la configuration, Vim peut afficher la première occurence au fur et à
|
||
mesure de la saisie de l'expression cherchée. Attention toutefois : quand
|
||
on a trouvé, il faut bien valider, sinon on se retrouve au point de départ.
|
||
</p>
|
||
<div class="metainformation">
|
||
Auteur : Nicolas George. Dernière modification : 2013-10-20 par Antoine Amarilli.
|
||
<br />
|
||
to <span style="color: blue">B</span><span style="color: red">e</span> continued
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html>
|