Comment puis-je fermer tout le tampon sauf Emacs actuel? Semblable à la fonction “Fermer les autres tabs” dans les navigateurs Web modernes?
Pour une approche plus manuelle, vous pouvez répertorier tous les tampons avec Cx Cb , marquer les tampons dans la liste pour les supprimer avec d , puis utiliser x pour les supprimer.
Je recommande également de remplacer les tampons de liste par un ibuffer plus avancé: (global-set-key (kbd "Cx Cb") 'ibuffer)
. Ce qui précède fonctionnera avec ibuffer, mais vous pouvez également le faire:
m (marquez le tampon que vous souhaitez conserver)
t (marques de bascule)
D (tue tous les tampons marqués)
J’utilise également cet extrait du wiki d’Emacs, ce qui rationaliserait davantage cette approche manuelle:
;; Ensure ibuffer opens with point at the current buffer's entry. (defadvice ibuffer (around ibuffer-point-to-most-recent) () "Open ibuffer with cursor pointed to most recent buffer name." (let ((recent-buffer-name (buffer-name))) ad-do-it (ibuffer-jump-to-buffer recent-buffer-name))) (ad-activate 'ibuffer)
De EmacsWiki: Killing Buffers :
(defun kill-other-buffers () "Kill all other buffers." (interactive) (mapc 'kill-buffer (delq (current-buffer) (remove-if-not 'buffer-file-name (buffer-list)))))
Edit : mis à jour avec les commentaires de Gilles
Il n’y a pas de moyen directement dans emacs pour faire cela.
Vous pourriez écrire une fonction pour ce faire. Ce qui suit fermera tous les tampons:
(defun close-all-buffers () (interactif) (mapc 'kill-buffer (liste tampon)))
Il y a une commande intégrée m – x kill-some-buffers
(j’utilise 24.3.50) Dans mon interface graphique nextstep (pas essayé dans un terminal mais je suis sûr que c’est similaire), vous pouvez ensuite approuver les tampons à tuer.
(defun only-current-buffer () (interactive) (let ((tobe-killed (cdr (buffer-list (current-buffer))))) (while tobe-killed (kill-buffer (car tobe-killed)) (setq tobe-killed (cdr tobe-killed)))))
Cela fonctionne comme prévu.
Et après avoir lu la réponse de @ Starkey, je pense que ce sera mieux:
(defun only-current-buffer () (interactive) (mapc 'kill-buffer (cdr (buffer-list (current-buffer)))))
(buffer-list (current-buffer)) renverra une liste contenant tous les tampons existants, avec le tampon actuel en tête de la liste.
Ceci est ma première réponse sur StackOverflow. J’espère que cela aide 🙂
J’ai trouvé cette solution la plus simple. Cela supprime tous les tampons sauf celui en cours. Vous devez append ce code à votre fichier .emacs
(defun kill-other-buffers () "Kill all other buffers." (interactive) (mapc 'kill-buffer (delq (current-buffer) (buffer-list))))
Bien sûr, vous l’utilisez avec Mx kill-other-buffers
RET ou vous collez le code suivant dans le fichier .emacs
et appuyez simplement sur Cx Cb
(global-set-key (kbd "Cx Cb") 'kill-other-buffers)
Vous pouvez aussi aimer celui-ci – tuez tous les tampons sauf celui en cours, * Messages * et * scratch * (ce qui est pratique, je les appelle “toolkit”), fermez également les fenêtres redondantes et vivez quelle fenêtre courante tampon.
(defun my/kill-all-buffers-except-toolbox () "Kill all buffers except current one and toolkit (*Messages*, *scratch*). Close other windows." (interactive) (mapc 'kill-buffer (remove-if (lambda (x) (or (ssortingng-equal (buffer-name) (buffer-name x)) (ssortingng-equal "*Messages*" (buffer-name x)) (ssortingng-equal "*scratch*" (buffer-name x)))) (buffer-list))) (delete-other-windows))