helm 搜索时,怎么忽略一些文件

刚从vim开始转入emacs阵营,现在用的是spacemacs

** 描述 使用spacemacs/helm-project-smart-do-search 搜索时会搜索到项目里生成的压缩文件,能使用 .gitignore 忽略掉这些文件吗?

** 场景重现

  • 打开Emacs
  • SPC f f 并打开包含 .gitignore 的文件夹里的文件
  • 使用 SPC / 并输入搜索关键字

*** 出现 匹配出包含关键字的所有文件

*** 期待 忽略掉 .gitignore 中的文件后的匹配结果

** 系统环境

  • OS: macOS Sierra 10.12.4
  • Emacs: 25.1.1
  • Spacemacs: 0.200.x
  • Spacemacs branch: master (rev. c2774bc)
  • Editing style: vim
  • Completion: helm
  • Layers:
  yaml
  html
  javascript
  python
  helm
  auto-completion
  (better-defaults :variables better-defaults-move-to-end-of-code-first t) ;comment
  emacs-lisp
  git
  markdown
  org
  spell-checking
  syntax-checking

这个功能是由helm-ag这个包决定的,主要看你使用的搜索后端是什么。

目前ag似乎对.gitignore支持不是很好。

详见 https://github.com/syl20bnr/spacemacs/issues/8428

谢谢 回答,请问怎么安装 配置? 我怎么只找到helm-ag-r 是这个包吗?

如果你的搜索用了heml-ag, 你可以通过.agignore 定制ag的搜索。

比如我的一个工程下的.agignore

frameworks
runtime
simulator
assetsUpdate_test
project.manifest
version.manifest
1 个赞

在终端里可以alias ag='ag --path-to-agignore ~/.agignore',emacs里helm-ag-use-agignore说是Use .agignore where is at project root if it exists.,所以要始终使用同一个(比如~目录下)的.agignore的话可能需要helm-ag-command-option

1 个赞

@young40 @JJPandari 谢谢你们的回答,

我终于解决了,但我发现它只支持一层的目录

要是这样就不行了。。。

static/dist/conf/*.json
static/dist/js
static/dist/css

一层也能用了,哈哈

我都是git init .,然后编辑 .gitignore。然后M-x helm-project-do-ag就可以忽略掉gitignore中的文件了 。这个命令会用aprojectile(一个package)找到最近的一个project(这里project的意思是一个.git文件夹),在这个目录下执行ag

这个是什么?

应该是多打了一个a,

projectile