关于spc p f 忽视某些文件的问题

比如我需要忽视 .pyc 文件在 spc p f 里该怎么处理?

echo '-*.pyc' >> $PROJECT_ROOT_DIR/.projectile

sorry, 我昨天试了一下,好像这么配置有点问题,等我周末有空研究一下

Update:

看了一下, 这个用法应该是没问题的,详细见楼下 @Samray 贴的链接;不过有个 Bug,helm-projectile-find-file 默认的排序方式是最近访问过的文件优先,它在做这个排序的时候把最近打开过的文件列表合并到结果列表里了,所以如果你之前打开过 x.pyc,那么即便是通过上述方法忽略了 *.pyc,这个 x.pyc 还是会在结果列表里。解决方法是清除一下 recentf-save-file

这个-是什么呢?

类似这样:(append-to-list 'projectile-globally-ignored-file-suffixes '(".pyc"))

1 个赞

文件夹怎样忽视呢?

我用的这个:(append-to-list 'projectile-globally-ignored-directories '(“tmp” “log” “.git” “.svn” “temp” “obj” “build” “Library” “StreamingAssets” “ProjectSettings”))

1 个赞

这个变量要是有 local 的版本就好了,而且我发现使用起来不是很灵活,比如我要排除的文件夹不在项目根目录下,比如: example/dir1,添加dir1到这个变量就没有作用,这种情况还挺常见。有没有更全面的解决方案呢?

http://projectile.readthedocs.io/en/latest/usage/#ignoring-files

Projectile also supports relative pathname ignores, in your .projectile file

-tmp
-*.rb
-*.yml
-models

不管用,也许应该给 projectile 提个 issue?

我自己的做法一般是在 .gitignore 里面添加需要忽略的文件,我记得 projectile 是会对 .gitignore 生效的. 如果.gitignore.projectile 都没有生效的话, 可以试试设置projectile-enable-caching ,因为projectile-enable-caching 默认值是 t. 所以应该需要修改这个值, 需要考虑缓存问题

echo '-*.pyc' >> $PROJECT_ROOT_DIR/.projectile

看了一下, 这个用法应该是没问题的,详细见 @Samray 贴的链接;不过有个 Bug,helm-projectile-find-file 默认的排序方式是最近访问过的文件优先,它在做这个排序的时候把最近打开过的文件列表合并到结果列表里了,所以如果你之前打开过 x.pyc,那么即便是通过上述方法忽略了 *.pyc,这个 x.pyc 还是会在结果列表里。解决方法是清除一下 recentf-save-file

2 个赞

楼上所有的方法都尝试了,仍然不能忽视,比如在根目录子目录下生成的 png 文件

.projectile 文件忽视 -*.png 无效,修改变量的办法太繁琐(因为子目录路径不一定),并且貌似对子目录也无效

奇怪了,不管是 alien indexing 还是 native indexing 都不行,gitignore 对 git status 管用,但就是对 projectile 无效。重新生成 cache 也不行。这个挺恶心人的,因为我的项目里很多运行代码块生成的图片。

而且我发现 git 子项目不能被当作一个单独的项目?

我尝试追踪过 SPC p f,如果.projecile 存在于project根目录,其会使用.projectile作为配置文件生成文件列表,如果其不存在,才会使用调用git 生成文件列表

win10 下 真的不管用,我也试过好几种写法,都没用,作者原文看了,

Everything ignored should be preceded with a - sign. Alternatively, not having any prefix at all also means to ignore the directory or file pattern that follows.

好像是这个意思, 但也没有用

-log
-tmp
-vendor
-public

怎么排成一行了,想用个硬回车换成四行,结果变成发布了:sweat_smile:

.projectile确实是生效的.

我是在删除了 .emacs.d/.cache 目录下的 projectile.cache 和 recentf 后生效的.

哈哈, 这是个老帖子…

搜索的时候如果要排除那些二进制文件,比如 pyc, bin 等等.

可以参考我写的 moccur-extension.el 扩展里面的 file-binary-p 函数,专门用于判断一个文件是不是二进制文件. 这样就不用写一大堆扩展名了.

https://www.emacswiki.org/emacs/moccur-extension.el

1 个赞

我记得projectile会忽略.gitignore 里的文件