Contrairement à certains éditeurs, Emacs n'édite pas de fichiers. Emacs édite des buffers. Un fichier est une suite d'octets sur un support quelconque, mais pour Emacs un buffer est une copie de travail de ce fichier. Toutes les modifications apportées à un texte sont en fait apportées à un buffer avant d'être enregistrées dans un fichier.
Emacs possède de plus une notion de fenêtre. Une fenêtre est un espace sur l'écran qui affiche un buffer. Elle contient de plus une ligne de mode qui donne des indications sur le buffer en cours d'édition (voir chapitre Organisation de l'écran).
Lorsque l'utilisateur saisit du texte, c'est dans la fenêtre qu'il le saisit, mais c'est dans le buffer que sont faites ses modifications. Lorsque l'utilisateur change de buffer la fenêtre reste la même mais le buffer affiché change.
C-x C-f
nom: ouverture du fichier
nom dans la fenêtre courante. Le buffer
édité est mis en arrière plan, et reste dans la
liste de buffers. Un nouveau buffer est créé
C-x C-v
nom: ouverture du fichier
nom dans la fenêtre courante à la place du
buffer édité. Le buffer édité est
fermé (avec confirmation au besoin), et le fichier passé
en argument est ouvert dans un buffer qui prendra sa place
C-x C-s
: enregistre le contenu du buffer courant dans
le fichier sur lequel il est ouvert
C-x s
: enregistre le contenu de tous les buffers
ouverts
C-x C-w
nom: enregistre le contenu du buffer
édité sous le nom nom
C-x b
buffer: sélectionne ou
crée (s'il n'existe pas) le buffer buffer dans la
fenêtre courante
C-x 4 b
buffer: sélectionne ou
crée le buffer buffer dans une nouvelle fenêtre
C-x C-b
: ouvre une nouvelle fenêtre contenant un
la liste de tous les buffers ouverts. Je conseille à toute
personne intéressée de se reporter à la section
Listing Existing Buffers du manuel Emacs pour plus
d'informations au sujet de cette liste et comment l'utiliser
M-x rename-buffer
: renomme le buffer courant (notons
que cela n'affecte pas le nom du fichier visité)
C-x k
buffer: détruit le buffer
buffer, ou le buffer courant si aucun buffer n'est
passé en argument
C-x 2
: Découpe verticalement la fenêtre
courante en deux fenêtres
C-x 3
: Découpe horizontalement la fenêtre
courante en deux fenêtres
C-x o
: Sélectionne la fenêtre suivante
C-x 0
: Détruit la fenêtre
sélectionnée
C-x 1
: Détruit toutes les fenêtres sauf
la fenêtre courante
C-x +
: Réorganise toutes les fenêtres, et
leur donne une taille égale