You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Emacs的find-file中应用dired的文件隐藏规则?

实现find-file复用dired的文件隐藏/排序规则

方法一:直接隐藏匹配文件

Emacs的补全系统支持通过completion-ignored-patterns变量忽略指定模式的文件,你可以直接复用已配置的dired-omit-files正则规则:

;; 将dired的忽略规则应用到find-file补全
(add-to-list 'completion-ignored-patterns dired-omit-files)

这条配置会让find-file的补全列表直接隐藏所有匹配dired-omit-files规则的文件,和dired中的效果一致。

方法二:无法隐藏时将匹配文件移至底部

如果某些补全系统不支持直接隐藏,或者你希望保留文件但放在列表末尾,可以自定义补全排序函数:

;; 定义排序函数:将匹配忽略规则的文件移至底部
(defun my-completion-sort-omit-files (a b)
  (let ((a-matches (string-match-p dired-omit-files a))
        (b-matches (string-match-p dired-omit-files b)))
    (cond
     ;; 如果a匹配规则、b不匹配,a放后面
     ((and a-matches (not b-matches)) nil)
     ;; 如果b匹配规则、a不匹配,a放前面
     ((and (not a-matches) b-matches) t)
     ;; 都匹配或都不匹配时按字母顺序排序
     (t (string< a b)))))

;; 将排序函数应用到文件类补全(包括find-file)
(setq completion-category-overrides
      '((file (sort-function . my-completion-sort-omit-files))))

注意事项

  • 如果你使用了Vertico、Icomplete等第三方补全框架,上述配置通常都能生效;
  • 若要同时启用“优先隐藏,隐藏失败则排序”,可以先添加completion-ignored-patterns配置,再设置排序函数作为兜底。

内容的提问来源于stack exchange,提问作者David Avarage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 16:57:17