* Emacs, les bases Cette page est basée sur [[https://www.tecmint.com/emacs-text-editor/][cette page]] *emacs* se lance soit en mode gui, soit console. J'utilise les deux, peut importe, seul le contexte détermine mon choix. En mode console, si *emacs* est configuré pour fonctionner en tant que service, on peux utiliser la commande suivante : ~emacsclient -nw~ Lorsqu'une fenetre s'affiche, sous *emacs* on appel ça une *frame*. La *frame* est donc le contenant de plus haut niveau. Dans une *frame* on va retrouver une *windows* qui va contenir un *buffer*. On utilise rarement les fenêtres (page de documentation par exemple). Quand on édite un fichier, celui-ci est donc dans un *buffer*. Il y a autant de buffers actifs qu'il y a de fichiers ouverts. En bas de fenêtre, on va retrouver une barre de status, classique, et un *mini buffer* qui là aussi affiche quelques messages. Dans la suite de cet article, je vais présenter ce qui m'a été utile et souvent manqué. Il existe parfois (souvent) d'autres raccourcis pour réaliser les opérations. J'ai choisi de limiter l'information afin de faciliter sa mémorisation. * Les opérations de base - ~C-h C-h~ : affiche l'aide intégrée - ~C-x fleche droite~ : passe au buffer suivant - ~C-x fleche gauche~ : passe au buffer précédent - ~C-x f~ : charge un fichier dans un nouveau buffer - ~C-x C-s~ : sauvegarde les modifications dans le fichier - ~C-x s~ : sauvegarde les modification dans tous les fichiers ouverts - ~C-x k~ : ferme le buffer actif - ~C-g~ : annule la séquence de raccourcis clavier. Trèèèès utile. * Couper, copier, coller, annuler - ~M-w~ : copier - ~C-w~ : couper - ~C-k~ : coupe la ligne entière à partir du curseur - ~C-y~ : coller - ~C-x u~ : annuler Les opérations de type couper/copier/coller s'opèrent sur une "région". Il faut donc définir cette région. Pour se faire on déplace le curseur en début de zone, puis on exécute : ~C-espace~. En bas de fenètre l'inscription *Mark set* apparait. Après avoir marqué le début de la région, il faut déplacer le curseur jusqu'à la fin, pour sélectionner la zone. A partir de là, vous pouvez couper, copier le contenu de la région et déplacer le curseur vers la zone ou coller le texte. * Chercher une chaine de caractères La recherche d'une chaine de caractère se fait vers le début du fichier ou vers sa fin, par rapport au curseur. - ~C-R~ : recherche vers le début - ~C-S~ : recherche vers la fin Pour se déplacer dans les résultats de recherche, il suffit de ré-exécuter la séquence. * Chercher et remplacer Chercher une chaine de caractère et la remplacer, fonctionne à partir du curseur. Pour faire une recherche sur tout le fichier, il faut se mettre au tout début. - ~ESC-%~ : ouvre un minibuffer ou l'on écrit la chaine que l'on va chercher Puis le minibuffer nous demande par quoi la remplacer. Après validation, *emacs* met en surbrillance les occurences trouvées et nous propose d'effectuer le remplacement. - ~y~ : valide le remplacement; - ~n~ : invalide le remplacement et on passe à l'occurence suivante; - ~.~ : remplace et quitte le mode cherche et remplace; - ~!~ : remplace toutes les occurences et me demande pas à chaque fois; - ~^~ : revient sur la précédente occurence - ~q~ : quitte tout simplement le mode cherche et remplace * Déplacement dans un fichier - ~C-a~ : va au début de la ligne; - ~C-e~ : va en fin de ligne; - ~ESC >~ : aller à la fin du fichier; - ~ESC <~ : aller au début du fichier; * les replis Les replis permettent de garder que les titres ou sections, et augmente ainsi la visibilité. Dans un fichier org-mode : - ~SHIFT-TAB~ : replis toutes les sections; - ~TAB~ : déplit. Pour fonctionner, il faut être en début de ligne. * Exécuter une commande emacs Toute les commandes n'ont pas de raccourcis clavier et on a pas toujours envie de tout retenir. *Emacs* permet d'exécuter une action, simplement en l'appelant : - ~ALT-X~ : puis le nom de l'action (la completion fonctionne)