当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表现得类似吗?)
答案 0 :(得分:22)
这条建议过滤掉'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)))
阅读documentation for dired-x以了解那里有什么。
答案 1 :(得分:7)
我建议使用ido-mode忽略文件;它默认带有Emacs,并添加了许多其他有用的增强功能,您很快就会爱上它们。 Ignorance is Bliss section from this Mastering Emacs blog post涵盖了如何忽略文件,目录和缓冲区:
ido-ignore-buffers
在 C-x b中选择要忽略的缓冲区列表 ido-ignore-directories
在 C-x d 和 C-x C-f ido-ignore-files
在 C-x C-f中选择要忽略的文件列表 答案 2 :(得分:3)
Icicles默认执行您的预期。对于文件名完成,它总是尊重completion-ignored-extensions
,包括缓冲区*Completions*
。你可以随时通过在迷你缓冲区中点击 C - 。来打开/关闭这个忽略。
此外,如果您使用Kevin Ryde的库completion-ignored-build.el
,则 Icicles 会自动利用该库动态调整忽略的文件扩展名。 (只需加载completion-ignored-build.el
- 不要启用其次要模式或建议。)
答案 3 :(得分:1)
我不知道完成的答案,我很害怕。我认为这是设计的 - 当你知道你正在寻找的名字时,你可能不希望例如备份文件。但是当你不知道时,最好有一份所有文件的清单。
但是,对于dired,你可以在启动时加载'dired-x'包(在.emacs中),这提供了dired-omit-mode:
(load "dired-x")
您可以使用'M-x customize-variable< RET> dired-omit-files'来设置要忽略的实际模式。然后当你处于直接模式时,你可以使用M-O(字母,而不是数字)来打开和关闭“省略”。