如何让Dired忽略具有特定扩展名的文件

时间:2013-02-13 09:19:52

标签: emacs dired

我将以下内容放在我的.emacs文件中:

(require 'dired-x)
(add-hook 'dired-load-hook '(lambda () (require 'dired-x)))
(setq dired-omit-files-p t)
(setq dired-omit-files
(concat dired-omit-files "\\|^\\..+$\\|-t\\.tex$\\|-t\\.pdf$"))

C-x d仍然显示.pdf和.tex文件。我在最后一行中的语法错了吗?

奖金问题:有没有办法让Dired隐藏隐藏目录,例如.git文件夹?

2 个答案:

答案 0 :(得分:15)

一个简单且非常通用的解决方案,它不依赖于任何额外内容,是C-u s更改ls标志并立即刷新(即C-u s处理刷新因此,所涉及的打字很少)。通常,您需要删除-a以隐藏dotfiles。但是你可以在shell控制台中完成你已经能够做的所有事情,这远远超过简单的切换模式所能提供的(以一些额外的按键成本为代价)。并且有可用的先前标志的历史,因此“切换”也非常快。

答案 1 :(得分:12)

您的正则表达式将匹配*-t.tex个文件,而不是*.tex个。

使用最新版本的Emacs,将以下部分添加到~/.emacs以过滤您想要的内容就足够了:

(require 'dired-x)
(setq-default dired-omit-files-p t) ; this is buffer-local variable
(setq dired-omit-files
    (concat dired-omit-files "\\|^\\..+$\\|\\.pdf$\\|\\.tex$"))

更新:默认情况下, dired-omit-files regexp会过滤掉特殊目录...。如果您不想要此行为,则可以覆盖默认值(而不是使用 concat继承它们):

(setq dired-omit-files "^\\.[^.]\\|\\.pdf$\\|\\.tex$")

正则表达式^\\.[^.]将匹配任何长度为2+的字符串,以点开头,其中第二个字符是除点本身之外的任何字符。它并不完美(不会匹配像“.. foo”这样的文件名),但大部分时间都应该没问题。