Answers:
从射弹角度来看,它似乎提供了四种自定义选项,可以全局忽略文件/目录。我在下面列出了他们的每个人,以及他们的文档
projectile-globally-ignored-files
射弹全局忽略的文件列表。
projectile-globally-ignored-directories
射弹全局忽略的目录列表。
projectile-globally-ignored-file-suffixes
射弹全局忽略的文件后缀列表。
projectile-globally-ignored-modes
抛射物忽略的主要模式的正则表达式列表。
如果缓冲区使用给定的主要模式,则射弹将忽略使用缓冲区的功能。
请注意,这些是全局选项,因此例如,projectile-globally-ignored-directories
无论您使用的项目是什么,目录都
将被忽略。要忽略特定项目的文件/目录,可以将.projectile
文件添加到项目的根目录,并在其前面添加要忽略的路径,-
如下所示
-/CMake
有关更多信息,请参见projectile-parse-dirconfig-file
(或射弹的docs)的文档
解析项目忽略文件并返回目录以忽略并保留。
返回值将是一个缺点,car是要保留的目录列表,而cdr是要忽略的文件或目录列表。
以+开头的字符串将添加到要保留的目录列表中 ,以-开头的字符串将添加到要忽略的目录列表中 。为了向后兼容,如果没有 前缀,则该字符串将被视为忽略字符串。
另一种解决方案是使用ag
(the_silver_searcher)或rg
(ripgrep)生成项目文件。这是您可以使用的方法rg
:
(setq projectile-enable-caching t)
;;; Default rg arguments
;; https://github.com/BurntSushi/ripgrep
(when (executable-find "rg")
(progn
(defconst modi/rg-arguments
`("--line-number" ; line numbers
"--smart-case"
"--follow" ; follow symlinks
"--mmap") ; apply memory map optimization when possible
"Default rg arguments used in the functions in `projectile' package.")
(defun modi/advice-projectile-use-rg ()
"Always use `rg' for getting a list of all files in the project."
(mapconcat 'identity
(append '("\\rg") ; used unaliased version of `rg': \rg
modi/rg-arguments
'("--null" ; output null separated results,
"--files")) ; get file names matching the regex '' (all files)
" "))
(advice-add 'projectile-get-ext-command :override #'modi/advice-projectile-use-rg)))
在您的项目目录中,指定要忽略的文件.gitignore
,您可以轻松进行:)
代码来自kaushalmodi的 emacs配置。
搜索尊重忽略的目录/文件:
安装ack
(grep的替代方法。我通过自制软件安装。)
把--ignore-case
你的~.ackrc
文件(假设你要忽略大小写)
绑定helm-projectile-ack
到一个键。我通过以下方式在我的emacs初始化中执行此操作:
(use-package helm
...
:bind (...
("C-c p s a" . helm-projectile-ack)
)
...
)
.projectile
文件。例如,-.dot
-.jcs
-.svg
-.txt
采用
C-c p s a ;; search that respects .projectile ignore
要么
C-c s p g ;; search everything
projectile-globally-ignored-file-suffixes
预期工作(我认为)。它应该只包含后缀(即目标文件的“ o”),文件组(即“ * .o”)还是其他?坦白说,我尝试了所有我能想到的组合,但没有成功。