A veces mi lista de búfer tiene más de 10 ventanas directas, y termino usando buffer-menu
para marcarlas manualmente y eliminarlas todas. ¿Hay una manera más rápida de cerrar todas las ventanas abiertas dired?
A veces mi lista de búfer tiene más de 10 ventanas directas, y termino usando buffer-menu
para marcarlas manualmente y eliminarlas todas. ¿Hay una manera más rápida de cerrar todas las ventanas abiertas dired?
Respuestas:
Podrías hacer lo siguiente:
M-x
ibuffer
* /
para marcar buffers en modo directo.
D
para eliminarlos
C-x C-b
a ibuffer
.
t
( dired-toggle-marks
) para marcar todo (si ninguno se marcó previamente).
dired-toggle-marks
es el nombre del comando dired . Al presionar t
también se alternarán todas las marcas en ibuffer, pero los búferes no directos generalmente superan en número a los búferes directos, por lo que alternar a menudo no tiene sentido en este contexto.
En lugar de agregar otra función para eliminar todos los dired
búferes, le sugiero que aproveche los grupos de filtros ibuffer
, ya que le permite agrupar el búfer por muchas condiciones.
Aquí hay un ejemplo para establecer grupos de filtros:
(setq-default ibuffer-saved-filter-groups
`(("Default"
;; I create a group call Dired, which contains all buffer in dired-mode
("Dired" (mode . dired-mode))
("Temporary" (name . "\*.*\*"))
)))
Luego C-x C-b
abra la ibuffer
ventana, puede ver algo como esto:
Mueva el cursor a [ Dired ]
(con M-p
, M-n
), luego presione d
para marcar como eliminar
luego presione x
para ejecutar.
Prefiero esta forma porque no necesito pensar en cómo vincular mi clave a la nueva función, y mis buffers están mejor organizados.
ibuffer
después de evaluar su código. Tuve que golpear / R
(obligado ibuffer-switch-to-saved-filter-groups
) para obtener los grupos.
(ibuffer-switch-to-saved-filter-groups "Default")
Puede agregar esta línea de código en el enlace ibuffer, el nombre de los grupos de filtros debe cambiarse si no es asíDefault
¿Tiene muchos amortiguadores Dired porque los quería todos en un punto? IOW, ¿ querías crear cada uno de ellos como buffers separados?
Si no, la solución es simple: dígale a Dired que reutilice un búfer Dired existente cuando presioneRET
un nombre de directorio para abrirlo en Dired.
Aquí está cómo hacer eso:
Cargar biblioteca Dired + ( dired+.el
):
(require 'dired+)
Dile a Dired que reutilice los buffers de Dired:
(diredp-toggle-find-file-reuse-dir 1)
El efecto es que cuando golpeas RET
(o haces clic con el mouse) en un directorio en Dired, find-alternate-file
se usa, por lo que el búfer Dired original es reemplazado (eliminado) por el nuevo.
Puede alternar este comportamiento en cualquier momento, usando C-M-R
(aka C-M-S-r
) en Dired.
Algo como esto (desplazarse un poco)?
(defun kill-dired-buffers ()
(interactive)
(mapc (lambda (buffer)
(when (eq 'dired-mode (buffer-local-value 'major-mode buffer))
(kill-buffer buffer)))
(buffer-list)))
También puedes usar helm-mini
:
M-x helm-mini
.*Di
(palabra parcial para Dired
, no es necesario ingresar más). A medida que escribe, los búferes se reducen gradualmente. Ahora, solo Dired
queda el búfer. Presione M-a
para marcar todo.TAB
para cambiar al menú de acciones y presione K
para seleccionar la acción Kill buffer(s)
.RET
para ejecutar la acción.Lo bueno helm-mini
es que puede reemplazar Emacs normales C-x b
, por lo que no tendrá que usar dos combinaciones de teclas, una para cambiar el búfer y otra para un administrador de búfer real. helm-mini
Es todo en uno. Lea más en mi guía helm-mini .
helm-mini
también puede emparejar difusamente el búfer y permitir abrir múltiples búferes marcando con C-SPC
o M-a
(significa M ark a ll). También puede reducir al búfer que contiene cierta cadena agregando @
antes de un patrón, por ejemplo, @test
significa que seleccionar solo los búferes contienen la cadena "prueba".
Intentaría algo como esto:
(require 'dash)
(defun my-kill-dired-buffers ()
(interactive)
(kill-some-buffers
(-filter (lambda (buffer)
(save-excursion
(set-buffer buffer)
(eq major-mode 'dired-mode)))
(buffer-list))))
-filter
requiere dash.el
de MELPA. Probablemente deberías enumerar eso como un requisito.
Lo que en realidad podría estar buscando es una forma de limpiar automáticamente los búferes no deseados, en cuyo caso debe verificar midnight.el
, que es parte de Emacs.
Pero, en términos generales, ibuffer
hace que sea muy fácil operar con buffers a granel, como sugirió Francisco.
Si usa Icicles , puede usar C-x k
para matar todos los buffers Dired, o todos los buffers en cualquier modo dado.
Después de golpear C-x k
, use C-x M +
para mantener solo los búferes con un cierto modo. Presiona TAB
para ver los modos y elige dired-mode
. Luego, utiliza C-!
para matar a todos los buffers con ese modo.
C-x k C-x M + dired-mode C-!