From 8d6417046395a452c4cc6330411b435d2ce0b2af Mon Sep 17 00:00:00 2001 From: mlnguyen Date: Tue, 4 Mar 2003 13:10:33 +0000 Subject: [PATCH] *** empty log message *** --- unix/editeurs/emacs.png | Bin 0 -> 38439 bytes unix/editeurs/emacs.tml | 579 ++++++++++++++++++++++++++++++++++++++++ unix/editeurs/index.tml | 31 +-- 3 files changed, 593 insertions(+), 17 deletions(-) create mode 100644 unix/editeurs/emacs.png create mode 100644 unix/editeurs/emacs.tml diff --git a/unix/editeurs/emacs.png b/unix/editeurs/emacs.png new file mode 100644 index 0000000000000000000000000000000000000000..96cd1569667121cccf03ee7169fd0039e9d66273 GIT binary patch literal 38439 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 + + + + Tutorial emacs + + + +

GNU Emacs : tutorial

+ +

Ce tutorial est destiné aux gens souhaitant se familiariser ave +GNU Emacs. Si vous avez davantage de questions, vous pouvez les poser +sur forum dans le conti +ens.forum.informatique.editeurs.emacs. Pour savoir +comment poster sur forum et le lire, lisez la documentation à ce sujet.

+ +

Généralités

+ +

Qu'est-ce qu'Emacs ?

+ +

Emacs est un éditeur de texte très puissant, qui est également +capable de beaucoup d'autres choses (invoquer une commande shell, +envoyer ou recevoir du courrier électronique, lire les news, se +transformer en psy, et même faire le café selon certaines mauvaises +langues). En contrepartie, Emacs est assez lourd (beaucoup plus en +tout cas que l'éditeur standard d'UNIX, vi) et souvent ésotérique.

+ +

Emacs date de 1975. Il a été écrit par Richard M. Stallman qui +était alors au MIT. Emacs a été conçu à l'origine comme un ensemble de +macros pour un TECO, un vieil éditeur de texte. Emacs veut donc dire +« Editing MACroS ». Par la suite, plusieurs +versions d'Emacs ont été développées, mais la version la plus répandue +reste GNU Emacs (alias FSF Emacs), celle de M. Stallman, qui est +la réécriture du Emacs originel.

+ +
Ce tutorial est consacré à GNU Emacs +(accessible en lançant simplement « emacs » à +l'ENS) dans sa fonction d'éditeur de textes. Il ne faut pas confondre +GNU Emacs et XEmacs. Ce ne sont pas deux versions du même programme +mais, malgré les ressemblances, deux programmes différents.
+ +

Emacs est principalement utilisé sous les systèmes de type UNIX, +mais il existe également pour MS-DOS ou Windows.

+ +

Format des commandes emacs

+ +

Les commandes d'emacs utilisent les touches Control +(souvent abrégé en Ctrl sur la touche) ou +Meta de votre clavier. Si vous n'avez pas de touche +Meta ou que vous ne savez pas où elle est, utilisez la +touche Escape (ou Échap). Comme les +commandes sont assez complexes, on utilise des abréviations. Ainsi, +C-c signifie : appuyez sur Ctrl et, en +gardant la touche enfoncée, appuyez sur +c. M-g signifie : appuyez sur la touche +Meta et, en gardant la touche enfoncée, sur +g.

+ +
Si vous utilisez ESC à la place de +la touche Meta, il faut appuyer sur +ESC puis sur l'autre touche.
+ +

En particulier, par exemple, C-x i (insertion d'un +fichier) ne fait pas la même chose que C-x C-i +(qui décale une région sélectionnée d'un caractère vers la +droite)... Taper des commandes complexes d'emacs requiert parfois un +peu de doigté. Si vous vous êtes trompé de commande, vous pouvez +annuler avec C-_ (cf. ci-dessous la gestion des +erreurs).

+ +

Dernière précision : toutes les commandes emacs sont +accessibles en utilisant leur nom complet, qu'on peut appeler en +tapant d'abord M-x. Certaines d'entre elles sont +disponibles par le biais de raccourcis comme ceux cités plus +haut : M-g par exemple a pour nom complet M-x +goto-line. Mais beaucoup de commandes sont accessibles +seulement par un nom complet. En outre, vous pouvez parfois retrouver +une commande en passant par son nom complet (on retient mieux que +M-c met en majuscule la première lettre d'un mot quand on +se souvient que le c est pour capitalize-word).

+ +

Obtenir de l'aide

+ +

Emacs a la particularité d'avoir une aide en ligne importante. Pour +y accéder, lancez emacs tout seul (cf. infra) ou +tapez C-h ou encore M-x help.

+ +
Pour les utilisateurs de la config conscrits +2002, attention : la commande d'aide n'est plus C-h +mais M-?. Le remplacement est à faire pour toutes les +commandes d'aide qui suivent.
+ +

C-h k vous permet d'obtenir des renseignements +succints sur une commande donnée. Exemple : vous voulez savoir ce +que fait la commande M-g. Tapez C-h k. Emacs +vous demande de décrire la commande (key en +anglais) que vous souhaitez connaître. Tapez alors +M-g. Emacs ouvre en 2 la fenêtre et vous dit qu'il s'agit +de la commande goto-line, qu'on l'emploie comme +ceci : M-g <nombre n> et qu'il s'agit d'aller +à la ligne n.

+ +

C-h t lance le tutorial officiel d'emacs (en +anglais).

+ +

C-h i vous donne accès aux répertoires +« info » qui contiennent de l'aide sur différents +programmes, parmi lesquels emacs. Cette commande vous envoie +directement sur la rubrique emacs. On navigue entre les fichiersgrâce +à des liens hypertexte. On passe de lien en lien avec TAB +et M-TAB, on suit un lien avec Enter et on +remonte vers le répertoire père avec u;

+ +

Pour quitter l'aide, on utilise les commandes de manipulation des +buffers (cf. ci-dessous « Manipuler plusieurs buffers en +même temps »).

+ +

Vous pouvez obtenir la liste des commandes d'emacs en tapant +M-x describe-bindings.

+ +

Manipuler des fichiers

+ +

Lancer emacs

+ +

Emacs se lance comme n'importe quel programme sous UNIX. Si vous +tapez :

+ +
clipper ~ $ emacs
+ +

Emacs se lancera dans une fenêtre. Pour lancer emacs dans votre +terminal, utilisez l'option -nw. Cette option est +particulièrement pratique lorsque vous souhaitez travailler à distance +sur un fichier qui est sur votre compte clipper, par exemple, mais +elle vous privera de certaines possibilités (les menus déroulants et +les boutons, par exemple). Si vous souhaitez travailler sur un fichier +précis, tapez emacs puis le nom du fichier :

+ +
clipper ~ $ emacs maitrise.tex
+ +

Si vous observez la fenêtre d'emacs, vous pourrez voir un certain +nombre d'informations qui dépendent de la version d'emacs qui est +installée. À la date où cette documentation est écrite, c'est la +version 21.2.1 qui est installée par défaut sur clipper. Pour savoir +quelle est votre version, tapez 

+ +
clipper ~ $ emacs --version
+ +

Les renseignements donnés ici valent pour cette version. Il est +possible que certaines choses ne fonctionnent pas avec des versions +plus vieilles.

+ +
Notez aussi que certaines commandes ne sont +valables que dans le cadre de la config conscrit. Ce tutorial signale +les différences entre config conscrit et config standard.
+ +

À l'heure actuelle, emacs ressemble à ceci :

+ +
[Image de la
+fenêtre d'emacs]
+ +

Tout d'abord, vous voyez en haut de la fenêtre des menus déroulants +(File, Edit, Options, Buffers, Tools, Help), et en-dessous quelques +icônes. Il est commode au départ d'utiliser menus déroulants et +icônes, mais il ne faut pas en abuser. C'est en apprenant les +raccourcis claviers que vous exploiterez au maximum les possibilités +d'emacs et que vous serez plus efficaces. Remarquez aussi en bas de la +fenêtre ce qu'on appelle le mini-buffer, qui sert à emacs pour +communiquer avec vous. Lorsque vous tapez une commande, elle s'affiche +dans le mini-buffer.

+ +

Entre les deux se trouve, en gris sur l'image (avec « GNU +Emacs »), la « ligne de mode » (mode line en anglais). Elle donne de précieuses +indications telles que le nom du fichier en cours d'édition, le mode +majeur et le(s) mode(s) mineur(s) dans lequel vous vous trouvez +(cf. ci-dessous sur les modes d'emacs), éventuellement le numéro de la +ligne où se trouve votre curseur, etc.

+ +

Les modes d'emacs

+ +

Emacs peut s'adapter au type de fichier que vous éditez. Ce sont +ses « modes ». Le mode par défaut est appelé +« fondamental », il n'a pas de comportement +particulier. Il existe de nombreux modes, mais les plus important sont +le mode texte, le mode C ou encore le mode LaTeX. Quand vous éditez un +fichier, emacs choisit son mode en fonction de l'extension du fichier +en question. Par exemple, si vous éditez un fichier en +.tex, il se mettra automatiquement en mode LaTeX. S'il ne +peut pas déterminer quel type de fichier vous allez éditer, il se met +en mode fondamental.

+ +

Les modes C, texte ou LaTeX sont des modes majeurs. Il existe aussi +des modes mineurs qui peuvent s'activer ou se désactiver à l'intérieur +d'un mode majeur. Par exemple, le mode « fill » +signifie qu'emacs va aller à la ligne dès que c'est nécessaire. Le +mode « overwrite » signifie qu'il va écrire +par-dessus les caractères déjà tapés au lieu de les insérer. Le mode +majeur et le(s) mode(s) mineur(s) dans lesquels vous vous trouvez sont +indiqués dans la ligne de mode.

+ +

Fichiers et buffers

+ +

Tout d'abord, un rappel d'ordre général. Les éditeurs de texte +n'éditent pas directement un fichier. Ils mettent le contenu de votre +fichier dans un buffer (qu'on traduit parfois par +« tampon ») temporaire, qu'ils éditent. Quand vous +sauvegardez, l'éditeur retransfère les contenus du buffer dans votre +fichier. Si vous quittez l'éditeur sans sauvegarder, le buffer est +détruit et votre fichier demeure donc intact. C'est pourquoi, quand on +lance emacs sans argument, il ouvre un buffer appelé +*scratch* : c'est un buffer sans fichier +associé. *Help* est un autre exemple de buffer non +associé : c'est l'aide en ligne.

+ +

Que vous ayez lancé emacs tout court ou en lui demandant d'ouvrir +un fichier, vous pouvez insérer tout de suite du texte en tapant +directement ce que vous voulez.

+ +

Ouvrir un fichier

+ +

Vous pouvez ouvrir un fichier, comme nous l'avons vu, simplement en +le donnant comme argument à emacs, ou encore le faire une fois emacs +lancé. Pour cela, faites C-x C-f (nom complet : +M-x find file). Emacs vous demande alors quel fichier +vous voulez ouvrir. Il suffit de compléter le nom du fichier puis +d'appuyer sur Entrée, puis emacs crée un nouveau buffer +qui porte le nom du fichier que vous voulez éditer. À noter que si +vous jonglez entre plusieurs buffers, appuyer sur la flèche vers le +haut après un C-x C-f vous donne accès à l'historique de +tous les fichiers déjà ouverts par ce moyen.

+ +
Si vous voulez ouvrir un fichier qui existe déjà, +il vous suffit de taper les premières lettres de son nom puis +d'appuyer sur TAB. Emacs essaiera de compléter le nom de +fichier pour vous. C'est ce qu'on appelle la complétion.
+ +

Manipuler plusieurs buffers en même temps

+ +

Avec un seul et même emacs, vous pouvez manipuler plusieurs buffers +en même temps en utilisant le multi-fenêtrage, c'est-à-dire la +capacité d'emacs à couper sa fenêtre en deux (ou plus) pour vous +permettre d'avoir plusieurs buffers en regard. Pour ouvrir un deuxième +buffer, tapez C-x 2 (la fenêtre se coupe en 2 +horizontalement dans ce cas, si vous préférez un découpage vertical, +utilisez C-x 3). Pour passer d'un buffer à l'autre, +faites C-x o. Pour faire disparaître le buffer où se +trouve votre curseur, tapez C-x 0. Pour faire disparaître +l'autre c'est C-x 1.

+ +

Le multi-fenêtrage est une fonctionnalité très utile d'emacs. Elle +vous permet de comparer facilement plusieurs fichiers, de faire +facilement des copier-coller depuis plusieurs fichiers vers un seul, +etc.

+ +

Insérer un fichier

+ +

Déplacez votre curseur jusqu'à l'endroit où vous souhaitez insérer +un autre fichier. Puis tapez C-x i (M-x +insert-file). Emacs suit la même procédure qu'avec C-x +C-f : il vous demande quel fichier insérer.

+ +

Sauvegarder un fichier

+ +

Si vous tapez C-x C-s (M-x save-buffer), +emacs sauvegarde le buffer dans le fichier associé et indique à +l'écran (dans le mini-buffer) « Wrote +/users/00/litt/toto/maitrise.tex ». Si vous voulez +sauvegarder vos modifications dans un autre fichier, +il faut utiliser la commande C-x C-w. Le nom complet, +M-x write-file est transparent : emacs écrit le +contenu du buffer dans un fichier qui n'est pas nécessairement celui +associé au buffer. C-x C-w peut être pratique pour éditer +un fichier que vous n'avez pas le droit de modifier.

+ +

Quitter emacs

+ +

Tapez C-x C-c pour quitter emacs. Si vous avez édité +un ou des buffers que vous n'avez pas sauvegardé(s), emacs vous +demandera s'il doit le faire avant de se fermer.

+ +

Si vous désirez seulement quitter emacs temporairement (pour lire +votre mail ou faire une pause dans l'édition de votre fichier), la +meilleure solution est d'utiliser C-z qui +suspend emacs sans le fermer. Dès que vous voudrez reprendre +emacs, tapez fg dans le shell et vous retrouverez votre +fenêtre avec le même buffer et le curseur exactement où vous l'aviez +laissé. Si vous êtes en mode graphique, C-z minimise la +fenêtre d'emacs.

+ +

Manipuler du texte

+ +

Déplacer le curseur

+ +

Les raccourcis claviers vous permettent de vous déplacer très +facilement dans votre fichier. Ils peuvent remplacer les touches +« flèches », certes, mais plus encore vous +permettre d'être beaucoup plus rapide que si vous n'utilisiez que les +touches de déplacement du clavier. Leur apprentissage est un peu +laborieux mais ils vous feront gagner beaucoup de temps.

+ + + + + + + + + + + + + + + + + + + + + +
Bouger d'un(e)...Vers l'avantVers l'arrière
caractèreC-bC-f
motM-bM-f
ligneC-pC-n
début/fin de ligneC-aC-e
phraseM-aM-e
paragrapheM-{M-}
bufferM-<M->
+ +

Effacer

+ +

Pour effacer quelques caractères, vous pouvez utiliser les touches +delete ou backspace de votre +clavier. Évidemment, vous pouvez aussi utiliser des commandes pour +faire ce travail. C-d efface le caractère sur lequel se +trouve le curseur. M-d efface la suite d'un mot à partir +de l'endroit où se trouve le curseur (pour que le mot entier soit +effacé, il faut placer le curseur au début du mot).

+ +

Au niveau d'une ligne, C-k efface le reste de la ligne +à partir de la position du curseur. Pour effacer la ligne entière, il +faut placer le curseur au début de la ligne.

+ + + + + + + + +
CommandeNom completAction
C-dM-x delete-charEfface le caractère +sur lequel est le curseur.
M-dM-x kill-wordEfface le mot à partir du +curseur.
M-backspaceM-x backward-kill-wordEfface le +mot précédent.
C-kM-x kill-lineEfface la ligne à partir du +curseur
_M-x kill-paragraphEfface le paragraphe à +partir du curseur.
+ +

Sélectionner

+ +

On peut faire une sélection (pour couper ou copier, par exemple) +avec la souris dans emacs. Si vous ne pouvez/voulez pas sélectionner à +la souris (par exemple vous utilisez emacs -nw), vous +pouvez utilisez le système de marquage d'emacs. On place une +« marque » au début du texte à sélectionner avec +C-espace. Ensuite, déplacez le curseur jusqu'à la fin du +texte à sélectionner (on appelle l'endroit où est le curseur le +« point »). Votre sélection est faite (même si +vous ne la voyez pas).

+ + + + + + +
CommandeNom completAction
C-espaceM-x set-mark-commandPoser une +marque
C-x C-xM-x +exchange-point-and-markÉchanger la marque et le point
M-hM-x mark-paragraphSélectionner tout le +paragraphe
+ +

Copier et coller

+ +

Quand emacs efface quelque chose (mot, ligne, paragraphe, mais pas +un caractère isolé), il le place en mémoire (dans ce qu'en anglais on +appelle le kill ring). Vous pouvez ensuite +« coller » tout ce qui a été effacé (que ce soit +une seule grosse suppression ou plusieurs suppressions d'affilée) avec +C-y. Pour couper à proprement parler, il faut utiliser +C-w (ou M-x kill-region).

+ +

À noter que M-y permet de naviguer dans l'historique +du kill ring. C-y colle la dernière +chose à avoir été copiée ou coupée, mais si vous voulez coller quelque +chose coupé ou collé précédemment, utilisez M-y +après.

+ +

Pour copier quelque chose (pour le coller ensuite), sélectionner ce +qu'il faut copier puis faites M-w.

+ +

Rechercher et remplacer

+ +

Pour effectuer une recherche simple vers la fin du fichier, c'est +C-s suivi du mot ou de l'expression recherchée. Pour une +recherche vers le début du fichier, c'est C-r. Avec +emacs, il est également possible de faire des recherches en utilisant +des expression régulières (avec des métacaractères comme ., *, ?, $, +etc.) : taper C-M-s. Pour aller à l'occurence +suivante du mot ou de l'expression correspondant à votre recherche +(simple ou avec une expression régulière), tapez C-s ou +C-r. Pour annuler votre recherche, tapez +C-g). +

+ +
La syntaxe des expressions régulières d'emacs +est un peu particulière.
+ +

De même, pour les remplacements, emacs vous offre deux +possibilités. Pour remplacer simplement un mot ou une expression, +tapez M-%. Pour faire un remplacement à partir d'une +expression régulière, c'est M-x +query-replace-regexp. Dans les deux cas, une fois qu'emacs aura +trouvé la première occurrence correspondant à votre demande, il vous +demandera s'il doit effectuer le remplacement.

+ +

Répondez y pour remplacer cette occurrence, +n pour ne pas le faire. Dans ces deux cas, après avoir +effectué ou pas le remplacement, emacs passera à l'occurrence +suivante. Pour faire de manière automatique le remplacement sur la +suite du fichier, répondez !. Pour abandonner le +remplacement demandé, appuyez sur ESC.

+ +

Formater

+ +

Quand vous êtes en mode Fill (regardez votre ligne de +mode), emacs coupe naturellement les lignes de la meilleure manière +possible pour lui. Mais au fur et à mesure de l'édition de votre +fichier, vous pouvez vous retrouver avec des lignes très courtes et +d'autres trop longues. Une commande très utile est M-q +qui réarrange le texte d'un paragraphe de manière harmonieuse.

+ +

Vous pouvez également changer la longueur des lignes. Par exemple, +pour fixer à 20 caractères la longueur des lignes, tapez C-u 20 +C-x f.

+ +

Changements de casse

+ +

Emacs possède des commandes spéciales pour les problèmes de casse +(vous tapez deux majuscules de suite au lieu de la majuscule initiale +suivie de minuscules, etc.). Pour mettre en majuscules la première +lettre d'un mot, tapez M-c (c comme capitalize. Pour mettre un mot entier en majuscules, +c'est M-u (u pour uppercase). Pour le +mettre en minuscules, c'est M-l (l pour lowercase). Emacs effectue ces transformations à partir +de l'endroit où se trouve le curseur, pour changer le mot entier, il +faut donc se placer sur sa première lettre.

+ +

Permutations

+ +

Comme beaucoup de gens, vous faites des fautes de frappe qui sont +souvent dues à un manque de coordination entre les doigts. Vous tapez +donc « poru » au lieu de +« pour ». Emacs possède des commandes qui peuvent +résoudre votre problème en vous permettant de permuter des lettres, +des mots, des lignes, des phrases, et même des paragraphes. Ainsi, +alors que votre curseur est sur le u de « poru », +tapez C-t pour intervertir r et u.

+ + + + + + + + +
CommandeNom completAction
C-tM-x +transpose-charsIntervertit deux lettres
M-tM-x +transpose-wordsIntervertit deux mots
C-x C-tM-x +transpose-linesIntervertit deux lignes
_M-x +transpose-sentencesIntervertit deux phrases
_M-x +transpose-paragraphsIntervertit deux paragraphes
+ +

Divers

+ +

Gestion des erreurs

+ +

Si vous vous êtes trompé et que vous souhaitez revenir à l'action +précédente, tapez C-x u (ou C-_, plus facile +à taper). Vous pouvez revenir en arrière ainsi jusqu'à l'ouverture de +votre session emacs. Attention, C-_ ne s'applique qu'à +une modification du buffer. Ainsi, on ne peut pas annuler le +déplacement du curseur ou une opération de copier.

+ +
Si vous tapez C-_ par erreur, la +même touche peut servir à faire un redo (c'est-à-dire un undo +d'undo !). Pour cela, il vous suffit de faire un déplacement +quelconque du curseur (pour éviter de continuer la séquence d'undo +commencée) et de retaper C-_. Dans certains cas, les +C-_ en série et imbriqués peuvent avoir des conséquences +étonnantes.
+ +

Pour revenir carrément à l'état où était votre fichier au moment où +vous l'avez sauvegardé pour la dernière fois, tapez M-x +revert-buffer.

+ +
Pour annuler une commande que vous êtes en train +de taper (mais que vous n'avez pas encore lancée), tapez +C-g.
+ +

Emacs affichera « Quit » dans le mini-buffer +et abandonnera la commande en cours.

+ +

Interaction avec le shell

+ +

Il est possible d'exécuter une commande shell depuis emacs, par +exemple pour compiler le fichier tex que vous êtes en train +d'éditer. C'est la commande M-!. Emacs vous demande dans +le mini-buffer la commande que vous souhaitez lancer, et vous donne +son résultat. Si la commande s'est effectuée sans compte-rendu, emacs +vous dit  « (Shell command succeeded with +no output) ». Sinon, il coupe sa fenêtre en deux et +vous donne la sortie de la commande.

+ +

Pour exécuter une commande shell puis insérer le résultat de cette +commande dans le buffer, tapez plutôt C-u +M-!. Exemple : vous souhaitez insérer dans votre fichier +la date exacte. Tapez C-u M-!, puis emacs vous demande +quelle commande vous souhaitez exécuter. Répondez +« date ». Emacs insérera le résultat de la +commande date directement dans le fichier, au point où se +trouve votre curseur.

+ +

Vous pouvez même demander un terminal dans un nouveau buffer, qui +s'appelle précisément *Shell*, avec la commande M-x +shell. Attention, ce terminal ne traite pas les séquences +d'échappement, pour cela il faut plutôt faire M-x term +qui lance *terminal*.

+ +

Arguments numériques

+ +

Emacs permet de répéter autant de fois qu'on le souhaite le même +caractère ou la même commande grâce à C-u +<nombre>. Ainsi, C-u 50 C-p permet de +répéter 50 fois la commande C-p et donc de remonter de 50 +lignes. C-u 5 ! vous permet d'insérer 5 points +d'exclamation.

+ +

Dans le cadre de commandes plus complexes, C-u +<nombre> agit comme un modificateur. On l'a vu par +exemple pour changer la taille des lignes.

+ +

Complétion de mots déjà tapés

+ +

M-/ vous permet de compléter un mot en cours de +frappe. Admettons que vous écriviez un article de droit +constitutionnel et que vous deviez tapez +« anticonstitutionnellement » à plusieurs +reprises. La deuxième fois, tapez simplement +« anti » puis M-/. Emacs complètera +tout seul. Si d'autres mots commençant par +« anti » apparaissent déjà dans le buffer, taper +de nouveau M-/ permet de cycler entre tous les mots +possibles.

+ +

Psychanalyse

+ +

On prétend qu'emacs sait aussi faire le café, en attendant, vous +pouvez toujours vous faire psychanalyser par lui. Essayez donc +M-x doctor !

+ +

Configuration d'emacs

+ +

Emacs est extrêmement configurable. Pour modifier quelque chose à +sa configuration, il faut modifier le fichier .emacs se +trouvant dans votre répertoire personnel. Le .emacs de la +config conscrits 2002 contient une petite introduction au langage +utilisé ainsi qu'aux configurations de base que l'on peut faire.

+ +
Auteur : Marie-Lan Nguyen, avec +l'aide de Josselin Noirel, Luc Habert et David Madore. Dernière +modification le 2003-03-04
+ + + diff --git a/unix/editeurs/index.tml b/unix/editeurs/index.tml index b87db80..c30a192 100644 --- a/unix/editeurs/index.tml +++ b/unix/editeurs/index.tml @@ -13,25 +13,22 @@

Qu'est ce qu'un éditeur de texte ?

-

-C'est un programme qui sert à créer et modifier des textes, sans mise en -forme; la mise en page qu'on a pu y faire est une question de lisibilité (un -éditeur de textes n'est donc pas un traitement de textes). -

+

C'est un programme qui sert à créer et modifier des textes, sans +mise en forme; la mise en page qu'on a pu y faire est une question de +lisibilité (un éditeur de textes n'est donc pas un +traitement de textes).

-

-Quand on rédige un rapport, l'étape de réelle mise en page se fait par -l'intermédiaire d'un autre programme, LaTeX (un compilateur de -textes). L'écriture et la mise en page définitive (qui sont simultanées -avec un traitement de textes) sont donc deux étapes différentes (écriture puis -compilation). -

+

Quand on rédige un rapport, l'étape de réelle mise en page se fait +par l'intermédiaire d'un autre programme, LaTeX (un compilateur de +textes). L'écriture et la mise en page définitive (qui sont +simultanées avec un traitement de textes) sont donc deux étapes +différentes (écriture puis compilation).

-

-Pour apprendre progressivement à utiliser les éditeurs emacs -et vim, vous pouvez consulter les 7 -cercles des éditeurs de textes. -

+

Pour apprendre progressivement à utiliser les éditeurs +emacs et vim, vous pouvez consulter les 7 cercles des éditeurs de textes. Emacs +fait par ailleurs l'objet d'un tutorial +spécifique.

Écrire, oui, mais quoi ?