836 lines
37 KiB
HTML
836 lines
37 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>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-<</code> / <code>M-></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>
|