Как получить 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 ответа
Ваше регулярное выражение будет соответствовать *-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"), но в большинстве случаев должен быть в порядке.
Простое и очень общее решение, которое не зависит от каких-либо дополнительных C-u s
изменить ls
флаги и сразу же обновить (то есть C-u s
также заботится об освежении, поэтому ввод текста очень мал) Обычно вы хотите удалить -a
скрыть точечные файлы. Но вы можете делать все, что вы уже можете делать, в консоли оболочки, что гораздо больше, чем может предложить простой режим переключения (за счет некоторых дополнительных нажатий клавиш). И есть история предыдущих доступных флагов, так что переключение тоже довольно быстро.