我最近开始使用emacs作为默认编辑器/ IDE,并且对使用rgrep搜索项目中的文本通常感到满意。但是,如果我使用rgrep,则无法排除目录,特别是node_modules目录。这会导致更长的搜索时间和很多无关紧要的点击。
当我处于js2模式时,可以在emacs中使用rgrep时更改基本rgrep命令以排除那些目录吗?
最简单的选项是自定义grep-find-ignored-directories
用户选项。
您可能不想将此限制为js2-mode
。如果你是来约束这种方式,你可能会喜欢的东西去:
(add-hook 'js2-mode-hook 'my-js2-mode-hook)
(defun my-js2-mode-hook ()
"Custom behaviours for `js2-mode'."
(require 'grep)
(setq-local grep-find-ignored-directories
(cons "node_modules" (default-value 'grep-find-ignored-directories))))
但是,rgrep
当您仍在同一项目中时,肯定会有其他缓冲区可以从中启动。
目录局部变量提供了另一种方法(可以简单地解决项目中的所有文件访问缓冲区,但仅适用于某些非文件访问缓冲区)。
在实践中,除非你觉得node_modules
可能是你的目录名想在某些项目类型进行搜索,我会倾向于刚刚设置的全局值。
我还将参考以下功能grep-find-ignored-directories
:
如果元素是cons单元格,则在搜索目录中调用car以确定是否不应将cdr递归到该单元格中。
原则上,这提供了根据情况过滤目录的功能。不过,这并不是最容易使用的方法-它需要您已经有代码来识别给定目录是否属于node_modules
安全/不安全项目的一部分,并且该代码将再次需要在任何环境中工作。缓冲区的类型,因此您仍然要处理一些相同的问题。但是,如果您正在使用其他一些面向项目的库,则可能已有一些简单的方法来建立项目类型,然后可以在自定义谓词函数中使用该方法进行高级过滤。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句