Cours Emacs

icon

8

pages

icon

Français

icon

Documents

Écrit par

Publié par

Le téléchargement nécessite un accès à la bibliothèque YouScribe Tout savoir sur nos offres

icon

8

pages

icon

Français

icon

Documents

Le téléchargement nécessite un accès à la bibliothèque YouScribe Tout savoir sur nos offres

par IUT Informatique de Bayonne © Philippe Roose – 2000,2007 ÉDITEUR DE TEXTE : EMACS TABLE DES MATIERES 1. Qu’est qu’Emacs ? ________________________________________________________ 3 2. Quelques définitions_______________________________________________________ 3 3. Commandes de base _______________________________________________________ 3 3.1. Déplacements_______________________________________________________________ 3 3.2. Gestion des régions __________________________________________________________ 4 3.3. Couper/Copier/Coller________________________________________________________ 4 3.4. Annulation_________________________________________________________________ 4 3.5. Manipulation de fichiers _____________________________________________________ 4 3.6. Chercher/Remplacer ________________________________________________________ 5 3.7. Gestion des buffers et des fenêtres _____________________________________________ 5 4. Commandes diverses ______________________________________________________ 5 5. Personalisation d’Emacs ___________________________________________________ 5 6. Complétion ______________________________________________________________ 6 7. Les macros ______________________________________________________________ 6 8. Aide ____________________________________________________________________ 6 9. Conclusion ______________________________________________________________ 6 10. ...
Voir icon arrow

Publié par

Nombre de lectures

88

Langue

Français

par IUT Informatique de Bayonne © Philippe Roose – 2000,2007
ÉDITEUR DE TEXTE:EMACSTABLE DES MATIERES1. Qu’est qu’Emacs ? ________________________________________________________ 32. Quelques définitions_______________________________________________________ 33. Commandes de base _______________________________________________________ 33.1. Déplacements_______________________________________________________________ 33.2. Gestion des régions __________________________________________________________ 43.3. Couper/Copier/Coller________________________________________________________ 43.4. Annulation _________________________________________________________________ 43.5. Manipulation de fichiers _____________________________________________________ 43.6. Chercher/Remplacer ________________________________________________________ 53.7. Gestion des buffers et des fenêtres _____________________________________________ 54. Commandes diverses ______________________________________________________ 55. Personalisation d’Emacs ___________________________________________________ 56. Complétion ______________________________________________________________ 67. Les macros ______________________________________________________________ 68. Aide ____________________________________________________________________ 69. Conclusion ______________________________________________________________ 610. Annexes________________________________________________________________ 6
Roose Philippe –20002002
2/8
1. Qu’est qu’Emacs? C’est un éditeur de texte. Il permet donc de saisir…du texte ! Mais, bien plus qu’un « simple » éditeur de texte, Emacs est l’éditeur le plus puissant pour le programmeur. C’est un véritable environnement de programmation, certes un peu rude à appréhender, mais permettant de compiler, débugger, lire/écrire des courriers électroniques, lancer un Shell… Il possède une g d’avantages comme par exemple : divers modes d’édition selon le langage de programmation choisi (Ada, Lisp , C/C++, Java, …), indentation automatique, facilitant ainsi la lecture et le débogage des programmes, création de macros, évitant les actions fréquentes et répétitives entièrement paramétrable en Lisp, permettant de l’adapter à volonté gestion colorée des sources, facilite la lisibilité du code et le débogage du code, matchingdes parenthèses et accolades qui coûtent très cher en temps lorsqu’on en oublie, gestion de plusieurs buffers, permettant d’avoir en mémoire l’ensemble des fichiers sur lesquels on travaille ou bien qui nous sont utiles. Historique: Emacs veut direEditor MACroS (une autre traduction de l’acronyme pour les antiEmacs estEight Megabytes And Constantly Swapping). Il a été crée par Richard Matthew Stallman  bien connu du monde informatique pour avoir été à l’origine de laFree Software Fundation(FSF) et du projet GNU (Gnu is Not Unix) au MIT (Massachusetts Institute of Technology) en 1976 sur un projet de Guy Steele. Emacs est sous licence GPL (Gnu Public Licence) son code est donc librement diffusable et accessible pour d’éventuelles modifications.
2. Quelques définitions Région: Suite de caractères commençant et finissant à des positions données (correspond à une sélection) Buffer: Copie de travail d'un fichier.Emacspeut en ouvrir plusieurs à la fois. La différence entre un fichier et un buffer est qu’un fichier est stocké sur le disque alors qu’un buffer est une zone de mémoire contenant la copie d’un fichier afin d’y travailler dessus. Fenêtre: Zone de l'écran sur laquelle est affiché unbuffer. Le pressepapiers (aussi appelékillring) est une zone tampon où est expédié tout texte copié. Cx: correspond à l’appui sur les touchesContrôle+ xMx: (M correspond à Méta) correspond à l’appui sur les touchesESC + xSftx :correspond à l’appui sur les touchesShift()+ x
3. Commandes de base : taper simplementLancement d’Emacs emacsou cliquez sur son icône. Si l’on souhaite éditer un fichier particulier (déjà existant ou non), on tapeemacs nom_fichier(exemple :emacs tp1.ada).Cx Cc : Quitter emacs. Si des buffers en cours n’ont pas encore été sauvegardés, Emacs vous demandera de confirmer pary (yes)oun(no)
3.1. Déplacements Par caractères : Cf (forwardchar) ou flèche à droite : Déplacement d'un caractère vers la droite. Cb (backwardchar) ou flèche à gauche : Déplacement d'un caractère vers la gauche. Cp (previousline) ou flèche vers le haut : Déplacement d'une ligne vers le haut. Cn (nextline) ou flèche vers le bas : Déplacement d'une ligne vers le bas. Sur plusieurs caractères : Mf (forwardword) ou Sftflèche à droite: Déplacement d'un mot vers la droite du curseur. Mb (backwardword) Sftflèche à gauche : Déplacement d'un mot vers la gauche du curseur. Ca (beginningofline) ou Home : Déplacement au début de la ligne courante. Ce (endofline) ou Fin : Déplacement à la fin de la ligne courante. Cv (scrollup) ou PgDown (): Déplacement d'un écran vers le bas. Mv (scrolldown) ou PgUp (): Déplacement d'un écran vers le haut. M  > (endofbuffer) ou SftFin : Déplacement à la fin du buffer.
Roose Philippe –20002002
3/8
M  < (beginningofbuffer) ou SftHome : Déplacement au début du buffer.
3.2. Gestion des régions Pour définir une région, il est nécessaire de se positionner à une des deux extrémités (début ou fin) et de taperC Espace. On se positionne ensuite à l’autre extrémité de la zone et on réalise l’action voulue (copier, coller, supprimer, mettre en majuscule, …).
3.3. Couper/Copier/Coller A chaque Couper/Copier de caractères, mots ou régions, le contenu est mis dans le « pressepapier ». Coller consiste à le restituer. MSuppr (killword) : Destruction du mot précédent le curseur. Cd (killword) : Destruction du caractère sous le curseur. Md (killword) : Destruction du mot suivant le curseur. Ck (killline) : Destruction des caractères à droites du curseur jusqu’à la fin de la ligne. Cw : Couper une région. Mw : Copier une région. Cy (yank) : Coller le pressepapier. Cette opération peut être réalisée plusieurs fois. My (yankpopremplace le contenu de presse papier par son précédent contenu et le colle là où est) : positionné le curseur. Il existe également une autre manière de réaliser du copier/coller bien utile lorsque l’on écrit du code. C’est le copier/coller rectangulaire.  Imaginons le texte suivant :  Bonjours,  Je suis le  Copier/coller  Rectangulaire Si l’on désire supprimer les , il nécessaire de passer sur chaque ligne. Certes, pour 4 lignes, ceci n’est pas bien méchant, mais imaginons un fichier avec des milliers de lignes de ce type… Nous allons utiliser le copier/coller rectangulaire. En mettant une marque en début de la zone à couper (coin supérieur gauche), puis faisant unCx r kpour couper, nous supprimons le rectangle correspondant. Si nécessaire, il possible de coller ce rectangle avecCx r y.
3.4. Annulation Cx u (undo) ou C/ (slash): permet d’annuler la ou les opérations précédentes. En l’appelant successivement sans relâcher la toucheCtrl, on remonte dans l’historique du document en annulant les actions unes à unes. Cg (keyboardquit) : permet d’annuler une commande en cours non encore validée. Par exemple, pour quitter il faut faireCxpuisCc. Si une fois la toucheCxappuyée, on ne désire plus sortir du programme, le simpleCgannulera l’action en cours (leCx).
3.5. Manipulation de fichiers Cx Cfnom_de_fichier: ouverture ou création (sinom_de_fichiern’existe pas) denom_de_fichier. Emacs fournit ce que l’on appelle la complétion. C’est à dire, qu’au lieu de tapernom_de_fichier en entier, on peut ne taper que la ou les premières lettres puis appuyer sur la toucheTab, il complétera le nom si il y a une solution unique. Dans le cas contraire, il complète jusque là où il peut puis attend soit l’ajout de caractères pour lever l’ambiguïté soit l’appui 2 fois surTabpour proposer un choix de fichiers. Nous reviendrons sur l’utilisation de la complétion qui est un des points fondamentaux d’Emacs. Cx i : insère un autre fichier à partir de la position courante du curseur. Cx Cs : sauvegarde. On pourra préciser le nom si il n’a encore jamais été sauvegardé. Cx Cw : sauvegarde en donnant un nom. Le buffer correspond au nom de la sauvegarde.
Roose Philippe –20002002
4/8
3.6. Chercher/Remplacer Cs (searchforward) : recherche incrémentale. La recherche est effectuée au fur et à mesure que la chaîne est saisie. Le point de départ de la recherche se situe à la position du curseur et vers l’avant. Cr (searchbackward) : idem que précédemment mais la recherche se fait en arrière. Mxreplacestring: remplace toutes les occurrences d’une chaîne par une autre sans confirmation. M% (ouMx queryreplace) remplace toutes les occurrences d’une chaîne par une autre avec confirmations de chacune des occurrences, permettant à la fois de réaliser une vérification, mais également de réaliser un remplacement partiel.
3.7. Gestion des buffers et des fenêtres Emacs permet d’avoir plusieurs buffers en mémoire, permettant donc de travailler sur plusieurs fichiers sans avoir à ouvrir autant d’Emacs que de fichiers ou sans avoir à refermer puis relancer Emacs à chaque changement de fichier. Cet avantage, anodin peutêtre pour certain vous sera d’une grosse utilité. Cx b : passage d’un buffer à un autre. Cx Cb : donne la liste de tous les buffers en cours. (Cx k killbuffer): permet de tuer un buffer. Une confirmation sera demandée si le buffer a été modifié depuis sa dernière sauvegarde sur disque. Cx Cs : Sauvegarde le buffer courant. Mxrenamebuffer: Renomme le buffer courant. Cxn:nétant un nombre, permet de diviser la fenêtre ennfenêtres contenant le buffer courant. L’intérêt est qu’après, on passe dans les autres fenêtres pour y afficher d’autres buffers afin d’avoir simultanément à l’écran un nombrende buffer. Cx o (otherwindow) : Change la fenêtre courante. Cx 0(deletewindow) : Détruit la fenêtre courante. Attention, détruire une fenêtre ne détruit pas le buffer qu’elle contient. Il est toujours en mémoire. Cx 1 : Détruit toutes les fenêtres pour qu’il n’en reste qu’une seule. Remarque : pensez à utiliser la complétion lors de mouvements entre buffers, ainsi la navigation entre les différents fichiers n’en seront qui moins fastidieux.
4. Commandes diverses Mxgotoline: permet de positionner le curseur sur une ligne donnée. Utile lors des phases de débogage. Mxfontlockmode: donne des couleurs à vos fichiers sources selon le mode sélectionné (C, ADA, …) Mx cmode : passe en mode d’édition de source C (idem pour javamode, c++mode, adamode, …). Le passage dans le mode du langage identifié permet d’utiliser des fonctions propres comme l’indentation (Mx indentregion). L’indentation peut se faire d’un bloc (en sélectionnant une région et en y appliquant la fonction d’indentation) ou ligne à ligne en appuyant à chaque fois sur la touche TAB. Mx spellregion: Permet de corriger l’orthographe d’un texte relativement au dictionnaire par défaut (anglais). Il est possible de changer en utilisant :Mx ispellchangedictionnary. La liste des dictionnaires disponibles seront alors affichés. Remarque : Je vous encourage à systématiquement indenter correctement vos programmes. Ils n’en seront que plus facile à relire, à maintenir et à debugger !
5. Personalisation d’Emacs Nous avons vu jusqu’à présent un certain nombre de commandes affectées à des combinaisons de touches. Il en existe en fait beaucoup d’autres. On pourra obtenir la liste de toutes ces affectations en faisantF1b. Mais il est possible de créer ses propres combinaisons de touches pour appeler certaines commandes à l’aide de la fonctionglobalsetkey. Au chargement, Emacs lit un fichier appelé «.emacs», vous en avez peutêtre déjà un par défaut (regardez dans votre$HOME). En ajoutant dans le .emacsla commande suivante(globalsetkey \Cl ‘gotoline), nous ajoutons une commande Clqui permettra d’aller automatiquement à un numéro de ligne donné. Mais, Emacs permet aussi de gérer la couleur. On pourra par exemple personnaliser sa fenêtre Emacs en lui donnant une couleur de fond, une autre pour les caractères, … Si l’on veut que ces modifications soient prises en compte à chaque chargement d’Emacs, on les inclura dans le.emacs. Exemple
Roose Philippe –20002002
5/8
(setbackgroundcolor « moccasin ») ; couleur de fond (setforegroundcolor « black ») ; couleur de texte (setcursorcolor « black ») ; couleur du curseur Remarque : Je vous encourage à vous « fabriquer » votre propre Emacs. Personnalisezle à votre goût en changeant les couleurs, créezvous les raccourcis que vous utilisez le plus possible, ce n’est qu’à cette condition qu’Emacs deviendra convivial et vous permettra de gagner du temps. Il doit évoluer fréquemment dans les premières utilisations.
6. Complétion Emacs peut faire beaucoup plus que les simples exemples présentés plus haut. La complétion y est incluse à tous les niveaux, au niveau des commandes mais aussi au niveau de contenu des fichiers. Par exemple, dans l’édition d’un fichier source, vous avez un nom de variable long et pénible à écrire, il suffit de taper ses premières lignes puisM /qui complétera si ce mot est présent dans un des buffers. Il n’y a donc plus d’excuses pour mettre des noms de fonctions, de variables ou de fichiers à 3 lettres incompréhensibles. Remarque : Les complétion est souvent peu utilisée dans Emacs. Néanmoins, l’essayer, c’est vraiment l’adopter. Elle constitue avec le point développé précédemment sûrement l’un des points clés que ses concurrents n’ont pas et qu’ils nous envient ! Plus sérieusement, elle permet un gain de temps important, ainsi qu’une minimisation des fautes de frappes concernant les noms de fichiers, noms de fonctions, variables, …
7. Les macros Lorsque certaines suites d’opérations sont répétées fréquemment, il est utile de les regrouper en macro qui, à chaque appel réaliseront la suite d’opérations décrites. Les macros :Cx (débutela définition d’une macro,Cx )la termine.Cx eexécute la dernière macro définie alors queMx nommacroexécute la macronommacro. On peut aussi nommer la dernière macro réalisée à l’aide deMx namelastkbdmacro. Cette commande est obligatoire si l’on désire sauvegarder cette macro dans un fichier (Mx insertkbdmacro). Enfin,Mx loadfilepermet de charger un fichier contenant des définitions de macro. Il sera intéressant de faire charger ce fichier automatiquement en plaçant cette commande dans le.emacs.
8. Aide Pour appeler l’aide, on tapeCh Ch. Vous pourrez sélectionner ensuite le domaine sur lequel vous recherchez de l’aide. Par exemple,fcorrespond à une description de fonction. Pour aller plus vite, on peut par la suite taper directement :Ch f. Par exemple : Ch f globalsetkey: donne toutes les informations sur cette fonction. On pourra regarder dans/opt/emacs/share/emacs/20.3/lisptous les fichier.elqui vous aideront à personnaliser votre Emacs ou bien appeler le tutorial d’Emacs parCh tou même la F.A.Q. (Frequently Asked Questions) par Ch Fenfin, Internet est une bonne source d’aide, de renseignements et on y trouvera toute sorte de tutoriaux, de cours complets ou abrégés, de résumés de commandes…comme surhttp://www.emacs.org.
9. Conclusion Afin de bien utiliser Emacs, et surtout de l’utiliser efficacement, il est nécessaire de maîtriser les commandes de base décrites dans ce polycopié. Au delà de ces prérequis, une utilisation efficace d’Emacs passe par une phase de configuration importante permettant à la fois de répondre aux habitudes du programmeur, mais également permettant de le placer dans un contexte d’environnement qui lui convient (taille des polices, couleurs de fond, de curseur, …). Tout ceci fait parti de votre travail, ce travailperdu au départ vous fera de gagner un temps précieux plus tard.
10. Annexes Pour les fanatiques des couleurs…(si si, je sais qu’il y en a parmi vous !), voici la liste des couleurs disponibles sous Emacs : snow gainsboro linen BlanchedAlmond GhostWhite FloralWhite AntiqueWhite bisque WhiteSmoke OldLace PapayaWhip PeachPuff
Roose Philippe –20002002
6/8
NavajoWhite moccasin cornsilk ivory LemonChiffon seashell honeydew MintCream azure AliceBlue lavender LavenderBlush MistyRose white black DarkSlateGray DimGray SlateGray LightSlateGray gray LightGray MidnightBlue navy NavyBlue CornflowerBlue DarkSlateBlue SlateBlue MediumSlateBlue LightSlateBlue MediumBlue RoyalBlue blue DodgerBlue DeepSkyBlue SkyBlue LightSkyBlue SteelBlue LightSteelBlue LightBlue PowderBlue PaleTurquoise DarkTurquoise MediumTurquoise turquoise cyan LightCyan CadetBlue MediumAquamarine aquamarine DarkGreen DarkOliveGreen DarkSeaGreen SeaGreen MediumSeaGreen LightSeaGreen PaleGreen SpringGreen LawnGreen green chartreuse
MediumSpringGreen GreenYellow LimeGreen YellowGreen ForestGreen OliveDrab DarkKhaki khaki PaleGoldenrod LightGoldenrodYellow LightYellow yellow gold LightGoldenrod goldenrod DarkGoldenrod RosyBrown IndianRed SaddleBrown sienna peru burlywood beige wheat SandyBrown tan chocolate firebrick brown DarkSalmon salmon LightSalmon orange DarkOrange coral LightCoral tomato OrangeRed red HotPink DeepPink pink LightPink PaleVioletRed maroon MediumVioletRed VioletRed magenta violet plum orchid MediumOrchid DarkOrchid DarkViolet BlueViolet purple MediumPurple thistle snow1 snow2
snow3 snow4 seashell1 seashell2 seashell3 seashell4 AntiqueWhite1 AntiqueWhite2 AntiqueWhite3 AntiqueWhite4 bisque1 bisque2 bisque3 bisque4 PeachPuff1 PeachPuff2 PeachPuff3 PeachPuff4 NavajoWhite1 NavajoWhite2 NavajoWhite3 NavajoWhite4 LemonChiffon1 LemonChiffon2 LemonChiffon3 LemonChiffon4 cornsilk1 cornsilk2 cornsilk3 cornsilk4 ivory1 ivory2 ivory3 ivory4 honeydew1 honeydew2 honeydew3 honeydew4 LavenderBlush1 LavenderBlush2 LavenderBlush3 LavenderBlush4 MistyRose1 MistyRose2 MistyRose3 MistyRose4 azure1 azure2 azure3 azure4 SlateBlue1 SlateBlue2 SlateBlue3 SlateBlue4 RoyalBlue1 RoyalBlue2 RoyalBlue3 RoyalBlue4 blue1 blue2
Roose Philippe – Octobre 2002
blue3 blue4 DodgerBlue1 DodgerBlue2 DodgerBlue3 DodgerBlue4 SteelBlue1 SteelBlue2 SteelBlue3 SteelBlue4 DeepSkyBlue1 DeepSkyBlue2 DeepSkyBlue3 DeepSkyBlue4 SkyBlue1 SkyBlue2 SkyBlue3 SkyBlue4 LightSkyBlue1 LightSkyBlue2 LightSkyBlue3 LightSkyBlue4 SlateGray1 SlateGray2 SlateGray3 SlateGray4 LightSteelBlue1 LightSteelBlue2 LightSteelBlue3 LightSteelBlue4 LightBlue1 LightBlue2 LightBlue3 LightBlue4 LightCyan1 LightCyan2 LightCyan3 LightCyan4 PaleTurquoise1 PaleTurquoise2 PaleTurquoise3 PaleTurquoise4 CadetBlue1 CadetBlue2 CadetBlue3 CadetBlue4 turquoise1 turquoise2 turquoise3 turquoise4 cyan1 cyan2 cyan3 cyan4 DarkSlateGray1 DarkSlateGray2 DarkSlateGray3 DarkSlateGray4 aquamarine1 aquamarine2
7/8
aquamarine3 aquamarine4 DarkSeaGreen1 DarkSeaGreen2 DarkSeaGreen3 DarkSeaGreen4 SeaGreen1 SeaGreen2 SeaGreen3 SeaGreen4 PaleGreen1 PaleGreen2 PaleGreen3 PaleGreen4 SpringGreen1 SpringGreen2 SpringGreen3 SpringGreen4 green1 green2 green3 green4 chartreuse1 chartreuse2 chartreuse3 chartreuse4 OliveDrab1 OliveDrab2 OliveDrab3 OliveDrab4 DarkOliveGreen1 DarkOliveGreen2 DarkOliveGreen3 DarkOliveGreen4 khaki1 khaki2 khaki3 khaki4 LightGoldenrod1 LightGoldenrod2 LightGoldenrod3 LightGoldenrod4 LightYellow1 LightYellow2 LightYellow3 LightYellow4 yellow1 yellow2 yellow3 yellow4 gold1 gold2 gold3 gold4 goldenrod1 goldenrod2 goldenrod3 goldenrod4 DarkGoldenrod1 DarkGoldenrod2
DarkGoldenrod3 DarkGoldenrod4 RosyBrown1 RosyBrown2 RosyBrown3 RosyBrown4 IndianRed1 IndianRed2 IndianRed3 IndianRed4 sienna1 sienna2 sienna3 sienna4 burlywood1 burlywood2 burlywood3 burlywood4 wheat1 wheat2 wheat3 wheat4 tan1 tan2 tan3 tan4 chocolate1 chocolate2 chocolate3 chocolate4 firebrick1 firebrick2 firebrick3 firebrick4 brown1 brown2 brown3 brown4 salmon1 salmon2 salmon3 salmon4 LightSalmon1 LightSalmon2 LightSalmon3 LightSalmon4 orange1 orange2 orange3 orange4 DarkOrange1 DarkOrange2 DarkOrange3 DarkOrange4 coral1 coral2 coral3 coral4 tomato1 tomato2
tomato3 tomato4 OrangeRed1 OrangeRed2 OrangeRed3 OrangeRed4 red1 red2 red3 red4 DeepPink1 DeepPink2 DeepPink3 DeepPink4 HotPink1 HotPink2 HotPink3 HotPink4 pink1 pink2 pink3 pink4 LightPink1 LightPink2 LightPink3 LightPink4 PaleVioletRed1 PaleVioletRed2 PaleVioletRed3 PaleVioletRed4 maroon1 maroon2 maroon3 maroon4 VioletRed1 VioletRed2 VioletRed3 VioletRed4 magenta1 magenta2 magenta3 magenta4 orchid1 orchid2 orchid3 orchid4 plum1 plum2 plum3 plum4 MediumOrchid1 MediumOrchid2 MediumOrchid3 MediumOrchid4 DarkOrchid1 DarkOrchid2 DarkOrchid3 DarkOrchid4 purple1 purple2
Roose Philippe – Octobre 2002
purple3 purple4 MediumPurpl 1 MediumPurple2 MediumPurple3 MediumPurple4 thistle1 thistle2 thistle3 thistle4 gray0 gray5 gray10 gray15 gray20 gray25 gray30 gray35 gray40 gray45 gray50 gray55 gray60 gray65 gray70 gray75 gray80 gray85 gray90 gray95 gray100
8/8
Voir icon more
Alternate Text