10

我将以下内容放在我的 .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 文件夹?

4

2 回答 2

16

一个不依赖任何额外内容的简单且非常通用的解决方案是C-u s更改ls标志并立即刷新(也就是说,C-u s也负责刷新,因此涉及的输入很少)。通常你会想要删除-a以隐藏点文件。但是您可以在 shell 控制台中执行您已经能够执行的所有操作,这远远超出了简单切换模式所能提供的功能(以一些额外的按键为代价)。并且有可用的先前标志的历史记录,因此“切换”也非常快。

于 2014-08-26T13:32:32.450 回答
13

您的正则表达式将匹配*-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"这样的文件名),但大多数时候应该没问题。

于 2013-02-13T10:02:07.423 回答