Comment fermer tout sauf le tampon actuel dans Emacs? Similaire à la fonctionnalité "Fermer les autres onglets" dans les navigateurs Web modernes?
91
Pour une approche plus manuelle, vous pouvez répertorier tous les tampons avec C-x C-b, marquer les tampons dans la liste pour suppression avec d, puis les utiliser xpour les supprimer.
Je vous recommande également le remplacement de la liste-tampons avec le ibuffer plus avancé: (global-set-key (kbd "C-x C-b") 'ibuffer)
. Ce qui précède fonctionnera avec ibuffer, mais vous pouvez également le faire:
m(marquez le tampon que vous souhaitez conserver)
t(bascule)
D(tuez tous les tampons marqués)
J'utilise également cet extrait du Wiki Emacs, 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)
ibuffer
? @philsq
- être ? UtilisezC-h m
pour apprendre les associations de touches, comme avec n'importe quel autre mode.Depuis EmacsWiki: Killing Buffers :
Edit : mis à jour avec les retours de Gilles
la source
buffer-file-name
et donc l'appel àremove-if-not
dans l'exemple ci-dessus conservera les tampons dired (ainsi que le tampon de travail, les tampons de termes, les tampons d'aide, etc., tout ce qui ne visite pas un fichier). Je ne peux pas penser à un test facile qui fermerait les tampons de fichiers et les tampons dired, vous auriez besoin en gros d'une seconde invocation entière de mapc avec un test différent pour les tampons dired.(defun kill-other-buffers () "Kill all other buffers." (interactive) (mapc 'kill-buffer (delq (current-buffer) (remove-if-not '(lambda (x) (or (buffer-file-name x) (eq 'dired-mode (buffer-local-value 'major-mode x)))) (buffer-list)))))
cl-remove-if-not
par desremove-if-not
œuvres mais cela ne tue pas les*helm..
tamponsIl n'y a pas de moyen directement dans emacs de faire cela.
Vous pouvez écrire une fonction pour ce faire. Ce qui suit fermera tous les tampons:
la source
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 bien sûr que c'est similaire), vous pouvez ensuite approuver les tampons à tuer.la source
Cela fonctionne comme prévu.
Et après avoir lu la réponse de @ Starkey, je pense que ce sera mieux:
(buffer-list (current-buffer)) renverra une liste contenant tous les tampons existants, avec le tampon actuel en tête de la liste.
C'est ma première réponse sur StackOverflow. J'espère que ça aide :)
la source
J'ai trouvé que cette solution était la plus simple. Cela supprime tous les tampons sauf celui actuel. Vous devez ajouter ce code à votre
.emacs
fichierBien sûr, vous l'utilisez avec M-x
kill-other-buffers
RET ou vous collez également le code suivant dans le.emacs
fichier, puis appuyez simplement surC-xC-bla source
J'utilise crux-kill-other-buffers depuis quelques mois.
Mais je veux aussi que les tampons dired soient supprimés. Les réponses de @ Euge et @ wenjun.yan résolvent ce problème. Mais cela supprimera les tampons spéciaux (par exemple * git-credential-cache - daemon *, * scratch *, opération de barre, etc.). J'ai donc proposé cette solution (actuelle).
Inspiré des tampons de mise à mort . Vous pouvez en ajouter d'autres
condition
sur un autre nom de tampon à exclure, si vous le souhaitez.J'espère que ça aide :)
la source
Vous pouvez également aimer celui-ci - tuer tous les tampons sauf celui actuel, * Messages * et * scratch * (qui sont pratiques à avoir, je les appelle "boîte à outils"), fermez également les fenêtres redondantes, en vous vivant quelle fenêtre actuelle tampon.
la source
(string-equal (buffer-name) (buffer-name x))
est le même que(eq x (current-buffer))
, juste moins efficace. Le resteor
peut être simplifié à(member (buffer-name x) '("*Messages*" "*scratch*"))
Voici ce que tu veux:
source: https://blasphemousbits.wordpress.com/2007/05/04/learning-emacs-part-4-buffers-windows-and-frames/
la source