当I:Cx Cf TAB时,如何防止Emacs向我显示我不感兴趣的所有文件(例如〜备份文件,.pyc文件或.orig文件)?
它在一个方面起作用:如果我知道我要打开的文件以foo开头,我键入foo TAB,那么迷你缓冲区正确地自动填充到foo.py. 它正确地忽略了foo~和foo.pyc,因为〜和.pyc都在completion-ignored-extensions中.如果我真的想通过输入我自己的所有字母,它也正确地让我打开被忽略的文件.
但是,如果我只是点击TAB以显示完成列表缓冲区,那么该列表包含在completion-ignored-extensions中具有扩展名的文件,这使得很难找到我正在寻找的内容.
很明显,忽略不感兴趣的文件的代码是有效的.如何获得完成列表缓冲区以尊重completion-ignored-extensions?
(顺便说一下,我可以让dired表现得类似吗?)
这条建议过滤掉了以下列出的扩展名的文件'completion-ignored-extensions
:
(defadvice completion--file-name-table (after ignoring-backups-f-n-completion activate) "Filter out results when they match `completion-ignored-extensions'." (let ((res ad-return-value)) (if (and (listp res) (stringp (car res)) (cdr res)) ; length > 1, don't ignore sole match (setq ad-return-value (completion-pcm--filename-try-filter res)))))
注意:这不会影响dired
.
对于此dired
问题,请将此添加到.emacs
(eval-after-load "dired" '(require 'dired-x)) (add-hook 'dired-mode-hook (lambda () (dired-omit-mode 1)))
阅读dired-x的文档,了解那里有什么.
我建议使用ido-mode忽略文件; 它默认带有Emacs,并添加了许多其他有用的增强功能,您很快就会爱上它们.这篇Mastering Emacs博客文章中的Ignorance is Bliss部分介绍了如何忽略文件,目录和缓冲区:
ido-ignore-buffers
获取要忽略的缓冲区列表 C-x b
ido-ignore-directories
获取要在C-x d和中忽略的目录列表C-x C-f
ido-ignore-files
获取要忽略的文件列表 C-x C-f