我将以下内容放在我的.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文件夹?
答案 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”这样的文件名),但大部分时间都应该没问题。