如何在特定位置使用缓冲区文件清除所有缓冲区?

问题描述:

如何在特定位置使用缓冲区文件清除所有缓冲区?如何在特定位置使用缓冲区文件清除所有缓冲区?

例如,我要杀死缓冲文件在C的所有缓冲区:... \ dev的所有dired缓冲子目录到c:\ dev的

,还是别人的话,如何去虽然emacs中所有缓冲区的文件或目录?

谢谢@David @phils。我结合elisp的代码和功能ibuffer

(mapc (lambda (buffer) 
    (let ((file-name 
      (or (buffer-file-name buffer) 
       (with-current-buffer buffer 
       (and 
        (boundp 'dired-directory) 
        (stringp dired-directory) 
        dired-directory)) 
       ))) 
     (when (and file-name 
       (string-match "^c:.*?\\\\dev" file-name)) 
     (kill-buffer buffer)))) 
    (buffer-list)) 
+2

如果它是一个偶然的要求,我会使用'ibuffer'与模式匹配的文件路径标记所有缓冲区,并杀死标记的缓冲区。 – phils

+0

它的工作原理。但我想定期做。 – Shuguang

从elisp的使用:

(mapc (lambda (buffer) 
     (let ((file-name 
       (or (buffer-file-name buffer) 
        ;; In dired-mode we need `dired-directory' which 
        ;; might be a list and may not be fully expanded. 
        (with-current-buffer buffer 
        (and (eq major-mode 'dired-mode) 
          (expand-file-name 
          (if (consp dired-directory) 
           (car dired-directory) 
          dired-directory))))))) 
      (when (and file-name 
        (string-match "^c:\\\\.*\\\\dev" file-name)) 
      (kill-buffer buffer)))) 
     (buffer-list)) 
+0

我想你想把'file-name'作为参数传递给'string-match',不是吗? – tripleee

+0

谢谢,修复它。 – David

+0

如何使用缓冲区文件名无法评估的dired缓冲区? – Shuguang