tuteurs.ens.fr/www/unix/editeurs/cercles.html

837 lines
37 KiB
HTML
Raw Normal View History

2024-04-02 20:48:26 +02:00
<?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>7 Cercles</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" class="actuel">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">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>Les Sept Cercles des Éditeurs de texte</h1>
<div class="sommaire">
<ul>
<li>
<a href="#un"> 1) «Il y a» </a>
<ul>
<li>
<a href="#s1_1">Lancer son éditeur</a>
</li>
<li>
<a href="#s1_2">Sauvegarder son texte</a>
</li>
<li>
<a href="#quitter">Quitter son éditeur</a>
</li>
<li>
<a href="#s1_4">Écrire et effacer du texte</a>
</li>
<li>
<a href="#s1_5">Se déplacer simplement</a>
</li>
<li>
<a href="#s1_6">Trouver l'aide</a>
</li>
</ul>
</li>
<li>
<a href="#deux"> 2) «Je marche seul» </a>
<ul>
<li>
<a href="#s2_1">Défaire et refaire une action («undo» et «redo»)</a>
</li>
<li>
<a href="#s2_2">Se déplacer plus finement : par lignes, par paragraphes, par
demi-pages et par pages, etc</a>
</li>
<li>
<a href="#s2_3">Aller à un numéro de ligne précis</a>
</li>
<li>
<a href="#s2_4">Faire une destruction sélective (un caractère, une ligne, une
phrase, un paragraphe, etc)</a>
</li>
<li>
<a href="#s2_5">Chercher un mot</a>
</li>
<li>
<a href="#s2_6">Faire une recherche et remplacement simple</a>
</li>
<li>
<a href="#s2_7">Faire du copier-coller</a>
</li>
<li>
<a href="#s2_8">Reformater un paragraphe</a>
</li>
</ul>
</li>
<li>
<a href="#trois"> 3) «Des nôtres»</a>
<ul>
<li>
<a href="#s3_1">Savoir remplacer du texte  : remplacement d'une lettre par une
autre, d'un fragment de texte par un autre, écrasement du texte</a>
</li>
<li>
<a href="#s3_2">Faire passer une majuscule en minuscule et inversement</a>
</li>
<li>
<a href="#s3_3">Répéter la dernière action</a>
</li>
<li>
<a href="#s3_4">Savoir recoller deux lignes </a>
</li>
<li>
<a href="#s3_5">Repérer les parenthèses, crochets, accolades qui se
correspondent</a>
</li>
</ul>
</li>
<li>
<a href="#quatre"> 4) «Il suffira d'un signe» </a>
<ul>
<li>
<a href="#s4_1">Associer une fonction simple à une touche précise («mapper» une
touche)</a>
</li>
<li>
<a href="#s4_2">Insérer un fichier extérieur</a>
</li>
<li>
<a href="#s4_3">Écrire une partie du texte vers un fichier extérieur</a>
</li>
<li>
<a href="#s4_4"> Utiliser les expressions régulières fondamentales pour une
recherche : «matcher» un début/une fin de ligne, un chiffre quelconque, une
lettre quelconque, majuscules et minuscules, une ponctuation, et les
conjonctions (et, ou, sauf...).</a>
</li>
</ul>
</li>
<li>
<a href="#cinq"> 5) «Il changeait la vie» </a>
<ul>
<li>
<a href="#s5_1"> Savoir utiliser les expressions régulières pour des
remplacements.</a>
</li>
<li>
<a href="#s5_2"> Être initié aux deux premiers Cercles d'un autre éditeur.</a>
</li>
<li>
<a href="#s5_3"> Associer une fonction complexe ou une série de commandes à une touche
donnée. </a>
</li>
<li>
<a href="#s5_4">Partager sa fenêtre en plusieurs fenêtres pour éditer plusieurs
fichiers à la fois.</a>
</li>
<li>
<a href="#s5_5">Savoir faire appel à une commande shell</a>
</li>
<li>
<a href="#s5_6"> Connaître et savoir modifier le fichier de configuration de son
éditeur.</a>
</li>
</ul>
</li>
<li>
<a href="#six">6) «Veiller tard» </a>
<ul>
<li>
<a href="#s6_1"> Savoir gérer plusieurs «tampons» (<em>buffers</em>
temporaires).</a>
</li>
<li>
<a href="#s6_2"> Savoir placer des marques dans le texte pour s'y reporter.</a>
</li>
<li>
<a href="#s6_3"> Savoir se servir de la colorisation syntaxique
et forcer un type de colorisation quand ce n'est pas automatique.</a>
</li>
<li>
<a href="#s6_4">Savoir faire appel à une commande shell et en insérer le résultat
dans le fichier de travail</a>
</li>
<li>
<a href="#s6_5"> Savoir soutenir un assaut de mauvaise foi face à un défenseur de
l'alignement opposé.</a>
</li>
</ul>
</li>
<li>
<a href="#sept">7) «Au bout de mes rêves» </a>
<ul>
<li>
<a href="#s7_1"> Savoir récupérer, patcher, installer, compiler, configurer, paramétrer
son éditeur.</a>
</li>
<li>
<a href="#s7_2"> Savoir réécrire son fichier de configuration sans avoir de modèle sous
les yeux.</a>
</li>
<li>
<a href="#s7_3"> Savoir créer une nouvelle colorisation syntaxique.</a>
</li>
</ul>
</li>
<li>
<a href="#reference">Des références sur les éditeurs :</a>
</li>
</ul>
</div>
<p>
Voici une classification par niveau des degrés de connaissance de son éditeur.
Nous développons les deux premiers niveaux, en indiquant juste le nom de la
commande pour les niveaux suivants : nous estimons en effet qu'à partir
du niveau 3 vous êtes capables de trouver par vous-mêmes la façon de faire les
choses, et de chercher tout seuls dans les documentations...
</p>
<p>
Trois éditeurs sont ici abordés : emacs, nano et vim. L'ordre de préséance
entre éditeurs répond à un critère alphabétique neutre. Nous nous sommes aussi
efforcés de ne mettre en avant que des fonctionnalités communes à au moins
deux éditeurs : les avantages spécifiques de chaque éditeur n'ont donc
pas leur place ici.</p>
<p>
Enfin, quand nous disons «emacs», cela concerne bien entendu aussi
«xemacs».
</p>
<p>
Pour noter les raccourcis claviers, on utilise des notations différentes
suivant les éditeurs, pour suivre la façon dont les touches sont indiquées
dans l'aide. On a donc:
</p>
<ul>
<li><strong>emacs</strong> : <code>C-x</code> pour control-x, c'est à dire
la touche x avec le modificateur control en même temps. De même
<code>M-x</code> représente la touche x avec le modificateur méta.</li>
<li><strong>nano</strong> : <code>^X</code> pour control-x. </li>
<li><strong>vim</strong> : <code>CTRL-X</code> pour control-x. </li>
</ul>
<h2>
<a name="un" id="un"> 1) «Il y a» </a>
</h2>
<h3>
<a name="s1_1" id="s1_1">Lancer son éditeur</a>
</h3>
<p>
Pour lancer son éditeur favori, la procédure est partout la même. Il faut
taper dans un <a href="../../jargon.html#xterm">terminal*</a> le nom de
l'éditeur suivi du nom du fichier à éditer; par exemple :
</p>
<pre><span class="prompt">prao ~ $</span> emacs rapport.tex
<span class="prompt">prao ~ $</span> nano index.html
<span class="prompt">prao ~ $</span> vim monbofichier
</pre>
<p>
Pour <code>emacs</code>, si vous êtes dans un <a href="../../jargon.html#xterm">xterm*</a>, vous pouvez taper :
</p>
<pre><span class="prompt">prao ~ $</span> emacs -nw rapport.tex
</pre>
<p class="continue">
pour lancer emacs dans le terminal où vous vous trouvez (sans ouvrir de
nouvelle fenêtre graphique), ce qui est plus rapide mais vous n'avez pas
la souris.
</p>
<h3>
<a name="s1_2" id="s1_2">Sauvegarder son texte</a>
</h3>
<ul>
<li><strong>emacs</strong> : taper <code>C-x C-s</code> (<em>save</em>).
Vous pouvez aussi cliquer sur le bouton <code>Save</code>, ou
sélectionner <code>Save <em>fichier</em></code> dans le menu
<code>File</code>. Pour sauver votre fichier sous un nom différent, tapez
<code>C-x C-w</code> ou sélectionner <code>Save as...</code> dans le menu
<code>File</code>. Emacs vous demande alors un nom de fichier.</li>
<li><strong>nano</strong> : taper <code>^O</code>. Nano vous demande
alors sous quel nom enregistrer le fichier. Appuyez sur la touche Entrée
si vous voulez garder le même nom.</li>
<li><strong>vim</strong> : taper <code>:w</code> (<em>write</em>). Pour
enregistrer sous un autre nom, faire <code>:sav nouveaunom</code>.</li>
</ul>
<h3>
<a name="quitter" id="quitter">Quitter son éditeur</a>
</h3>
<div class="attention">
<h1><img src="../../icones/panneau_attention.png" alt="/!\" /> Attention <img src="../../icones/panneau_attention.png" alt="/!\" /></h1>
<p>Quelle que soit l'application, vous devez la quitter
correctement, avec sa commande. Vous ne devez jamais fermer une fenêtre en
sélectionnant «Fermer» dans le cadre de la fenêtre; dans le cas d'un éditeur
mal configuré vous risquez de perdre votre travail. Des copies de sauvegarde
existent et permettent d'en récupérer la majeure partie, mais ce n'est pas un
pli à prendre... Quittez donc correctement votre éditeur.</p>
</div>
<ul>
<li><strong>emacs</strong> : taper <code>C-x C-c</code> ou cliquer sur <code>Exit
Emacs</code> dans le menu <code>File</code>. Emacs vous demande si vous voulez
sauvegarder votre texte.</li>
<li><strong>nano</strong> : taper <code>^X</code>. Cette commande
quitte nano en vous demandant si vous voulez enregistrer en
quittant.</li>
<li><strong>vim</strong> : taper <code>:wq</code> (<em>write quit</em>)
pour quitter en sauvant. Si vous essayez de quitter vim sans avoir sauvé
votre texte (avec <code>:q</code>), il refuse; il faut taper
<code>:q!</code> pour forcer la sortie sans sauver le document.</li>
</ul>
<h3>
<a name="s1_4" id="s1_4">Écrire et effacer du texte</a>
</h3>
<ul>
<li><strong>emacs</strong> : taper directement... Vous pouvez positionner le
curseur à l'aide de la souris. Pour effacer, utilisez la touche
Backspace.</li>
<li><strong>nano</strong> : vous pouvez aussi taper directement. La souris par
contre ne vous sert à rien.</li>
<li><strong>vim</strong> : il y a deux modes dans vim, un mode insertion (dans
lequel on écrit du texte) et un mode commande (où les touches correspondent à
une fonction). Par défaut, quand vous lancez vim, vous êtes en mode
commande.
<ul><li> Passer en mode insertion à l'endroit où se trouve le curseur : appuyez
sur la touche «i» («insérer»). Le mot «INSERT» apparaît en bas de
l'écran et vous signale que vous êtes en mode insertion.</li><li> Passer en mode commande : appuyez sur la touche «Escape». Le mot «INSERT»
disparaît.</li></ul>
<p>
Ce sont ces deux touches qui servent à alterner entre les deux modes. Vous
découvrirez plus tard les autres touches qui servent à insérer au début ou à
la fin de la ligne, avant ou après la ligne courante, etc.
</p>
<p>
Pour effacer du texte en mode insertion, utilisez la touche Backspace. La
souris ne sert à placer le curseur qu'avec gvim. L'effacement de texte en
mode commande, beaucoup plus précis, relève du Deuxième
Cercle...</p></li>
</ul>
<h3>
<a name="s1_5" id="s1_5">Se déplacer simplement</a>
</h3>
<ul>
<li><strong>emacs</strong> : deux solutions
<ul><li>Utilisez les flèches et la barre de défilement.</li><li>Il y a des commandes spécifiques pour se déplacer, qui sont les même
que dans un shell, et qui aident a retenir les touches de déplacement
complexe: <code>C-f</code> pour avancer (forward), <code>C-b</code> pour
reculer (backward), <code>C-n</code> pour descendre (next) et
<code>C-p</code> pour monter (previous).</li></ul>
</li>
<li><strong>nano</strong> : utilisez les flèches.</li>
<li><strong>vim</strong> :
<ul><li> En mode insertion : utilisez les flèches. Avec gvim vous disposez d'une
barre de défilement.</li><li> En mode commande : vous disposez de ces moyens, ainsi que des mythiques
touches h, j, k et l, fondamentales pour se déplacer dans un grand nombre de
jeux : h pour aller à gauche, l à droite, j vers le bas, et k vers le
haut.</li></ul>
</li>
</ul>
<h3>
<a name="s1_6" id="s1_6">Trouver l'aide</a>
</h3>
<ul>
<li><strong>emacs</strong> : que dire... Cliquez sur le menu <code>Help</code> et
choisissez ce qui vous plaît... Je vous conseille de commencer par le tutorial
et la <a href="../../jargon.html#FAQ">FAQ*</a>. Vous pouvez aussi utiliser les
commandes en <code>C-h</code> suivi d'une lettre pour avoir de l'aide sur
différent aspects d'emacs. Par exemple, <code>C-h t</code> lance le
tutorial, et <code>C-h C-h</code> vous donne l'aide sur l'aide.</li>
<li><strong>nano</strong> : les commandes que vous pouvez faire sont
indiquées dans les deux lignes en bas du terminal. Une aide succinte est
néanmoins disponible en tapant <code>^G</code> ou <code>F1</code>.</li>
<li><strong>vim</strong> : en mode commande, taper <code>:h</code>
(<em>help</em>). La fenêtre se divise en deux, et un fichier d'aide
apparaît. Son fonctionnement est décrit dans les premières lignes.
<p>
Des thèmes sont indiqués entre barres verticales
(par exemple, <code>|quickref|</code>. Pour y accéder, placez le curseur sur le
mot-clé entre barres et tapez CRTL-] (Controle-crochet fermant). Pour revenir
au début de l'aide, taper CRTL-T (<em>top</em>). Je vous conseille de
commencer par <code>|howto.txt|</code>, qui classe par thèmes les commandes.
Pour refermer l'écran d'aide, taper <code>:q</code> (<em>quit</em>).
</p></li>
</ul>
<h2>
<a name="deux" id="deux"> 2) «Je marche seul» </a>
</h2>
<h3>
<a name="s2_1" id="s2_1">Défaire et refaire une action («undo» et «redo»)</a>
</h3>
<ul>
<li><strong>emacs</strong> : utiliser le bouton <code>Undo</code>, ou
sélectionner <code>Undo</code> dans le menu <code>Edit</code>. Vous pouvez aussi
utiliser le raccourci clavier <code>C-x u</code>
(qui n'est pas <code>C-x C-u</code>...) ou <code>C-_</code> ou <code>C-/</code>.
<p>
Il n'y a pas de commande spécifique pour refaire. Un moyen de s'en sortir est
de taper un caractère et de faire des Undo : il défera alors les Undo
précédents, i.e. refera ce qui a été défait.
</p></li>
<li><strong>nano</strong> : cela n'est pas possible ! Cependant si
vous avez effacé des lignes en faisant <code>^K</code>, vous pouvez les
insérer en faisant <code>^U</code>.</li>
<li><strong>vim</strong> : (en mode commande). <code>u</code> (<em>undo</em>)
défait la dernière commande. <code>CTRL-R</code> (<em>redo</em>) refait la dernière
commande. On peut ainsi faire et refaire l'ensemble des actions
faites depuis que le fichier a commencé à être édité. </li>
</ul>
<h3>
<a name="s2_2" id="s2_2">Se déplacer plus finement : par lignes, par paragraphes, par
demi-pages et par pages, etc</a>
</h3>
<ul>
<li><strong>emacs</strong> :
<ul><li>
Les commandes de déplacement <code>C-f</code>, <code>C-b</code>,
<code>C-n</code> et <code>C-p</code> agissent différemment si on change de
modificateur:
<ul><li><code>M-f</code> et <code>M-b</code> se déplacent par mot.</li><li><code>M-n</code> et <code>M-p</code> se déplacent par paragraphes.</li></ul>
</li><li>
Il y a aussi quelques commandes supplémentaires :
<ul><li><code>Home</code> ou <code>C-a</code> placent le curseur en début de
ligne.</li><li><code>End</code> ou <code>C-e</code> place le curseur en fin de ligne.
</li><li><code>M-a</code> placent le curseur en début de phrase.</li><li><code>M-e</code> place le curseur en fin de phrase.</li><li><code>C-v</code> / <code>M-v</code> fait
respectivement avancer/reculer le texte d'un écran. </li><li><code>M-&lt;</code> / <code>M-&gt;</code> placent respectivement tout
au début/tout à la fin du fichier.</li></ul>
</li></ul>
</li>
<li><strong>nano</strong> : Utiliser les touches de déplacement
usuelles....</li>
<li><strong>vim</strong> : on peut utiliser les touches de déplacement,
mais on peut aussi tout faire en mode commande. Ces commandes de
déplacement sont aussi celles de <code><a href="../../unix/fichiers.html#less">less</a></code>.
<ul><li><code>$</code> place le curseur en fin de ligne.</li><li><code>^</code> et <code>0</code> (zéro) placent le curseur en début de ligne
(vous saurez plus tard la différence entre les deux commandes...).</li><li><code>w</code> (<em>word</em>) / <code>b</code> (<em>back</em>)
avance/recule d'un mot, curseur au début du mot.</li><li><code>e</code> (<em>end</em>) avance d'un mot, curseur en fin de
mot.</li><li><code>{</code> et <code>}</code> (accolades) : respectivement,
recule et avance d'un paragraphe.</li><li><code>(</code> et <code>)</code> (parenthèses) : respectivement, recule et avance
d'une phrase.</li><li><code>CTRL-D</code> (<em>down</em>) / <code>CTRL-U</code> (<em>up</em>) fait
respectivement avancer/reculer le texte d'un demi-écran. </li><li><code>CTRL-F</code> (<em>forward</em>) / <code>CTRL-B</code> (<em>back</em> fait
avancer/reculer le texte d'un écran.</li><li><code>CTRL-E</code>/<code>CTRL-Y</code> fait avancer/reculer le texte d'une
ligne.</li><li><code>gg</code> ou <code>[[</code> placent tout au début du
fichier.</li><li><code>G</code> ou <code>]]</code> placent tout à la fin du
fichier.</li></ul>
Ces commandes sont associables avec un quantificateur : <code>15w</code>
fait avancer le curseur de 15 mots. </li>
</ul>
<h3>
<a name="s2_3" id="s2_3">Aller à un numéro de ligne précis</a>
</h3>
<ul>
<li><strong>emacs</strong> : Taper <code>M-g</code> (méta) et indiquer
le numéro de ligne.</li>
<li><strong>nano</strong> : Taper <code>^_</code> (<em>line</em>) et
indiquer le numéro de la ligne.</li>
<li><strong>vim</strong> : on associe la commande <code>G</code> à un
numéro de ligne. Par exemple, <code>38G</code> place sur la ligne
38.</li>
</ul>
<h3>
<a name="s2_4" id="s2_4">Faire une destruction sélective (un caractère, une ligne, une
phrase, un paragraphe, etc)</a>
</h3>
<ul>
<li><strong>emacs</strong> :
<ul><li> La touche BACKSPACE efface le caractère à gauche du curseur.</li><li> La touche DELETE efface le caractère placé sous le curseur.</li><li><code>C-k</code> efface la fin de la ligne courante.</li><li> Pour effacer un fragment de texte, le sélectionner à la souris et cliquer
sur le bouton <code>Cut</code>, ou sélectionner <code>Cut</code> dans le menu
<code>Edit</code>.</li><li> On peut également effacer un fragment quelconque au clavier
en tapant Ctrl-espace à une extrémité de la zone à sélectionner, et
<code>C-w</code> à l'autre extrémité.</li></ul></li>
<li><strong>nano</strong> :
<ul><li> La touche BACKSPACE (ou <code>^H</code>) efface le caractère à gauche du curseur.</li><li> Les touches DELETE (ou <code>^D</code>) efface le caractère placé sous le curseur.</li><li><code>^K</code> efface la fin de la ligne courante.</li></ul>
</li>
<li><strong>vim</strong> : (en mode commande) :
<ul><li><code>x</code> détruit le caractère sous le curseur.</li><li><code>X</code> détruit le caractère à gauche le curseur.</li><li><code>dd</code> détruit la ligne courante.</li><li><code>D</code> détruit la fin de la ligne courante.</li><li> On peut aussi associer <code>d</code> à une commande de déplacement : par
exemple, <code>dG</code> pour détruire toute la fin du fichier, <code>d}</code> pour
détruire la fin du paragraphe, <code>d3w</code> pour détruire trois
mots.</li><li> Passer en mode visuel avec la commande <code>v</code> et utiliser les
touches de déplacement pour sélectionner un fragment de texte : le texte
sélectionné est mis en valeur. Taper <code>d</code> pour détruire le texte
sélectionné.</li></ul>
</li>
</ul>
<h3>
<a name="s2_5" id="s2_5">Chercher un mot</a>
</h3>
<ul>
<li><strong>emacs</strong> : vous pouvez faire appel au menu
<code>Edit</code> et cliquer sur <code>Search</code> ou <code>Search
Backwards</code>, et taper le mot recherché. Il est quand même plus
simple de taper <code>C-s</code> (<em>search</em>) ou <code>C-r</code>
(<em>rear</em>) pour chercher en arrière; indiquez le mot et tapez à
nouveau <code>C-s</code> (<code>C-r</code>) pour aller à la prochaine
occurrence du mot. Une fois arrivé en bas (ou en haut), emacs bippe et
revient à l'autre bout du texte.<br />
La casse des caractères n'a pas d'importance quand on indique une minuscule.
Par contre, si on demande une majuscule, il ne cherchera que les
majuscules.</li>
<li><strong>nano</strong> : taper <code>^W</code>; indiquez
le mot recherché.</li>
<li><strong>vim</strong> : en mode commande, appuyer sur le slash
(<code>/</code>) et indiquer le mot recherché (comme avec <a href="../../unix/fichiers.html#less"><code>less</code></a>). La casse des caractères
peut avoir de l'importance suivant votre configuration (tapez donc les
mots clefs en minuscules), et vim sait revenir au début du texte quand il
a atteint la fin du fichier. Pour aller à la prochaine occurrence du mot,
taper <code>n</code> (<em>next</em>). Pour aller à la précédente
occurrence du mot, taper <code>N</code>.<br />
Pour chercher un mot en arrière dans le texte, taper <code>?</code> puis le mot.
On se sert de <code>n</code> et de <code>N</code> de la même façon.<br />
Pour aller à la prochaine occurrence du mot se trouvant sous le curseur, taper <code>*</code>.
</li>
</ul>
<h3>
<a name="s2_6" id="s2_6">Faire une recherche et remplacement simple</a>
</h3>
<ul>
<li><strong>emacs</strong> : taper <code>M-%</code> et compléter, en validant
chaque terme par un retour à la ligne. Vous pouvez aussi utiliser le bouton
<code>Replace</code> ou sélectionner <code>Replace</code> dans le menu
<code>Edit</code>.<br />
Emacs vous demande confirmation pour chaque remplacement : répondre
<code>y</code> pour accepter, <code>n</code> pour refuser, <code>!</code>
pour tout remplacer d'un coup et <code>q</code> pour arrêter les
remplacements.</li>
<li><strong>nano</strong> : taper <code>^\</code>. Entrez la chaîne à
chercher puis la chaîne de remplacement. Nano demande confirmation pour chaque remplacement : taper <code>y</code> pour
accepter le remplacement, <code>n</code> pour le refuser, <code>a</code> pour
remplacer toutes les occurrences restantes.</li>
<li><strong>vim</strong> : on utilise la commande
<code>:%s/mot1/mot2/g</code>. Le pour-cent signifie que le remplacement
se fera dans tout le fichier, <code>s/mot1/mot2/</code> signifie qu'il
faut remplacer (<code>substitute</code>) le mot1 par le mot2. La dernière
lettre, <code>g</code>, signifie que l'on veut remplacer toutes les
occurrences présentes sur chaque ligne. En effet, sans le «g», seule la
première occurrence serait traitée.<br />
Si on veut que vim demande confirmation, on peut ajouter un «c» à la
fin : <code>:%s/mot1/mot2/gc</code>. Vim vous propose alors plusieurs
réponses possibles : <code>y</code> pour accepter le remplacement,
<code>n</code> pour le refuser, <code>a</code> (<em>all</em>) pour tout
remplacer d'un coup, <code>q</code> pour quitter. Vous retrouvez aussi
les commandes <code>CTRL-Y</code> et <code>CTRL-E</code>, pour faire reculer ou
avancer le texte d'une ligne.
</li>
</ul>
<h3>
<a name="s2_7" id="s2_7">Faire du copier-coller</a>
</h3>
<ul>
<li><strong>emacs</strong> : <ul><li> Avec la souris : sélectionner un
fragment de texte avec le bouton gauche souris et cliquer sur le bouton
<code>Copy</code>. Cliquer <strong>avec le bouton du milieu</strong> de
la souris à l'endroit où on veut coller le texte. Vous aurez reconnu ici
la méthode standard pour copier/coller du texte d'une fenêtre à
l'autre.</li><li> Au clavier : un texte qui a été effacé avec <code>C-w</code> ou
<code>C-k</code> peut
être collé ailleurs en tapant <code>C-y</code> (<em>yank</em>). Si on veut
copier un bout de texte sans l'effacer, il suffit de l'effacer et de le
recopier juste après là où il était (ce qui n'empêche pas de le recopier
ailleurs en autant d'exemplaires qu'on veut). On peut récupérer un texte
copié il y a longtemps avec <code>C-y</code> suivis d'un ou plusieurs
<code>M-y</code>. On peut aussi copier la région sélectionnée sans la
couper avec <code>M-w</code></li></ul> </li>
<li><strong>nano</strong> : tapez :
<ul><li>CTRL-^ pour sélectionner le début de la zone ;</li><li>CTRL-K pour couper la zone ;</li><li>CTRL-U pour copier.</li></ul>
</li>
<li><strong>vim</strong> : Passer en mode visuel avec la commande
<code>v</code> et utiliser les touches de déplacement pour sélectionner
un fragment de texte. Appuyer sur <code>y</code> (<em>yank</em>) pour
copier le texte en mémoire. Placer le curseur à l'endroit où on veut
coller le texte, et appuyer sur <code>p</code> (<em>put</em>) si vous
voulez coller après le curseur ou sur <code>P</code> si vous voulez
coller avant le curseur.
<code>yy</code> fait une copie de la ligne courante. On peut aussi utiliser
<code>y commande-de-déplacement</code> pour copier un fragment de texte, sans
passer par une sélection visuelle.
<div class="attention"><h1><img src="../../icones/panneau_attention.png" alt="/!\" /> Attention <img src="../../icones/panneau_attention.png" alt="/!\" /></h1>
Quand vous collez un bout de texte copié à la souris
dans un autre terminal, faites attention à être en mode insertion, sinon les
choses se passeront mal. En effet, vim interpréterait le texte que vous
collez comme des commandes jusqu'à ce qu'il rencontre des lettres comme
«i» ou «a» qui font passer en mode insertion.
</div>
</li>
</ul>
<h3>
<a name="s2_8" id="s2_8">Reformater un paragraphe</a>
</h3>
<ul>
<li><strong>emacs</strong> : <code>M-q</code>.</li>
<li><strong>nano</strong> : <code>^J</code>. </li>
<li><strong>vim</strong> : <code>Q</code> (si ça ne marche pas : <code>gqap</code>).</li>
</ul>
<h2>
<a name="trois" id="trois"> 3) «Des nôtres»</a>
</h2>
<h3>
<a name="s3_1" id="s3_1">Savoir remplacer du texte  : remplacement d'une lettre par une
autre, d'un fragment de texte par un autre, écrasement du texte</a>
</h3>
<ul>
<li><strong>emacs</strong> : <code>Inser</code> pour balancer entre les modes
insertion et écrasement.</li>
<li><strong>vim</strong> : <code>r</code> et <code>R</code> (<em>replace</em>).
<code>s</code> et <code>S</code> (<em>substitute</em>).</li>
</ul>
<h3>
<a name="s3_2" id="s3_2">Faire passer une majuscule en minuscule et inversement</a>
</h3>
<ul>
<li><strong>emacs</strong> : <code>M-l</code> et <code>M-u</code>.</li>
<li><strong>vim</strong> : <code>~</code> (tilde).</li>
</ul>
<h3>
<a name="s3_3" id="s3_3">Répéter la dernière action</a>
</h3>
<ul>
<li><strong>emacs</strong> :<code>C-x ESC ESC</code>.</li>
<li><strong>vim</strong> : <code>.</code> (point).</li>
</ul>
<h3>
<a name="s3_4" id="s3_4">Savoir recoller deux lignes </a>
</h3>
<ul>
<li><strong>emacs, nano</strong> : pas de commande spécifique; on recolle les deux
lignes en effaçant le caractère de fin de ligne, donc backspace en
début de ligne, ou Delete en fin de ligne.</li>
<li><strong>vim</strong> : <code>J</code> (<em>join</em>).</li>
</ul>
<h3>
<a name="s3_5" id="s3_5">Repérer les parenthèses, crochets, accolades qui se
correspondent</a>
</h3>
<ul>
<li><strong>emacs</strong> : colorisation syntaxique et <code>C-M-f</code>
/ <code>C-M-b</code>.</li>
<li><strong>vim</strong> : colorisation syntaxique et <code>%</code> (pour-cent).
</li>
</ul>
<h2>
<a name="quatre" id="quatre"> 4) «Il suffira d'un signe» </a>
</h2>
<h3>
<a name="s4_1" id="s4_1">Associer une fonction simple à une touche précise («mapper» une
touche)</a>
</h3>
<ul>
<li><strong>emacs</strong> : <code>M-x local-set-key</code> ou <code>M-x
global-set-key</code>.</li>
<li><strong>vim</strong> : <code>:map touche fonction</code>.</li>
</ul>
<h3>
<a name="s4_2" id="s4_2">Insérer un fichier extérieur</a>
</h3>
<ul>
<li><strong>emacs</strong> : <code>C-x i</code> ou <code>Insert file</code> dans le menu
<code>File</code>.</li>
<li><strong>nano</strong> : <code>^R fichier</code>.</li>
<li><strong>vim</strong> : <code>:r fichier</code>.</li>
</ul>
<h3>
<a name="s4_3" id="s4_3">Écrire une partie du texte vers un fichier extérieur</a>
</h3>
<ul>
<li><strong>emacs</strong> : <code>M-x write-region</code></li>
<li><strong>vim</strong> : sélectionner un bloc et sauver le texte sélectionné (<code>:w
nouveau-fichier</code>).</li>
</ul>
<h3>
<a name="s4_4" id="s4_4"> Utiliser les expressions régulières fondamentales pour une
recherche : «matcher» un début/une fin de ligne, un chiffre quelconque, une
lettre quelconque, majuscules et minuscules, une ponctuation, et les
conjonctions (et, ou, sauf...).</a>
</h3>
<h2>
<a name="cinq" id="cinq"> 5) «Il changeait la vie» </a>
</h2>
<h3>
<a name="s5_1" id="s5_1"> Savoir utiliser les expressions régulières pour des
remplacements.</a>
</h3>
<h3>
<a name="s5_2" id="s5_2"> Être initié aux deux premiers Cercles d'un autre éditeur.</a>
</h3>
<h3>
<a name="s5_3" id="s5_3"> Associer une fonction complexe ou une série de commandes à une touche
donnée. </a>
</h3>
<h3>
<a name="s5_4" id="s5_4">Partager sa fenêtre en plusieurs fenêtres pour éditer plusieurs
fichiers à la fois.</a>
</h3>
<ul>
<li><strong>emacs</strong> : <code>C-x 2</code> ou <code>Split
Window</code> dans le menu <code>File</code>. Options du menu
<code>File</code>. <code>C-x o</code> pour changer de fenêtre.</li>
<li><strong>vim</strong> : <code>-CTRL-W N</code> (<em>window
new</em>). <code>CTRL-W k</code> et
<code>CTRL-W j</code> pour monter/descendre d'une fenêtre interne.</li>
</ul>
<h3>
<a name="s5_5" id="s5_5">Savoir faire appel à une commande shell</a>
</h3>
<ul>
<li><strong>emacs</strong> : <code>M-!</code></li>
<li><strong>vim</strong> : <code>:!commande</code></li>
</ul>
<h3>
<a name="s5_6" id="s5_6"> Connaître et savoir modifier le fichier de configuration de son
éditeur.</a>
</h3>
<h2>
<a name="six" id="six">6) «Veiller tard» </a>
</h2>
<h3>
<a name="s6_1" id="s6_1"> Savoir gérer plusieurs «tampons» (<em>buffers</em>
temporaires).</a>
</h3>
<h3>
<a name="s6_2" id="s6_2"> Savoir placer des marques dans le texte pour s'y reporter.</a>
</h3>
<h3>
<a name="s6_3" id="s6_3"> Savoir se servir de la colorisation syntaxique
et forcer un type de colorisation quand ce n'est pas automatique.</a>
</h3>
<h3>
<a name="s6_4" id="s6_4">Savoir faire appel à une commande shell et en insérer le résultat
dans le fichier de travail</a>
</h3>
<ul>
<li><strong>emacs</strong> : <code>C-u M-!</code></li>
<li><strong>nano</strong> : copier-coller le résultat produit par
l'appel d'une commande shell dans un autre terminal.</li>
<li><strong>vim</strong> : <code>:r!commande</code></li>
</ul>
<h3>
<a name="s6_5" id="s6_5"> Savoir soutenir un assaut de mauvaise foi face à un défenseur de
l'alignement opposé.</a>
</h3>
<h2>
<a name="sept" id="sept">7) «Au bout de mes rêves» </a>
</h2>
<h3>
<a name="s7_1" id="s7_1"> Savoir récupérer, patcher, installer, compiler, configurer, paramétrer
son éditeur.</a>
</h3>
<h3>
<a name="s7_2" id="s7_2"> Savoir réécrire son fichier de configuration sans avoir de modèle sous
les yeux.</a>
</h3>
<h3>
<a name="s7_3" id="s7_3"> Savoir créer une nouvelle colorisation syntaxique.</a>
</h3>
<h2>
<a name="reference" id="reference">Des références sur les éditeurs :</a>
</h2>
<ol>
<li><strong>Emacs</strong> :
<ul><li><a href="http://www.gnu.org/software/emacs/emacs.html">GNU Emacs</a> : le
site officiel.</li><li><a href="http://www.xemacs.org/">Xemacs</a> : le site
officiel.</li><li><a href="http://www.linux-france.com/article/appli/emacs/index.html">Emacs</a>
sur Linux-France : liens vers la FAQ, tutorial, et d'autres choses.</li></ul></li>
<li><strong>vim</strong> :
<ul><li><a href="http://www.vim.org/">vim</a> : le site officiel.</li><li><a href="http://matrix.samizdat.net/pratique/documentation/guide-survie-VI.html">Guide de
survie sous VI ou VI par l'exemple</a> : Article d'introduction à VI, en
français, paru dans l'écho de Linux. Vraiment très bien...</li><li><a href="http://ftp.lmcp.jussieu.fr/impmc/Enseignement/ye/licence/methodes_num/documents/vi.html">Aide-mémoire pour
l'utilisation de vi</a>. Envisage, ce qui est rare, les options courantes du
.vimrc.</li></ul>
</li>
</ol>
<div class="metainformation">
Auteur : Dominique Quatravaux (1998), Émilia Robin (1998, 2000),
Joël Riou (2002), Gaëtan LEURENT (2004). Dernière modification : 2009-09-28 par Blaise Li.
</div>
</div>
</body>
</html>