如何让 fzf.vim 忽略 node_modules 和 .git 文件夹?

doc*_*pus 12 vim fzf

我在 vim 中设置了 fzf,几乎没有任何自定义:

" fzf and ripgrep settings
set rtp+=/usr/local/opt/fzf
let g:fzf_action = {
    \ 'ctrl-t': 'tab split',
    \ 'ctrl-i': 'split',
    \ 'ctrl-s': 'vsplit'
    \ }
Run Code Online (Sandbox Code Playgroud)

在我的 中.bash_profile,我将环境变量设置FZF_DEFAULT_COMMAND为显示隐藏,但忽略node_modules.git

export FZF_DEFAULT_COMMAND='rg --files --follow --no-ignore-vcs --hidden -g "!{node_modules/*,.git/*}"'
Run Code Online (Sandbox Code Playgroud)

但是,当我:Files在 vim 中使用函数时,它仍然在我想忽略的文件夹中搜索。

Kar*_*wat 23

您可以使用自定义 FZF_DEFAULT_COMMAND 忽略node_modules(以及您想要忽略的任何其他文件夹)。我用这样的东西:

(将其放入您的 vimrc 中)

let $FZF_DEFAULT_COMMAND='find . \( -name node_modules -o -name .git \) -prune -o -print'

  • 这是所有列出的解决方案中我最喜欢的解决方案,并且立即生效 (3认同)

und*_*ndg 19

你试过:GFiles命令吗?

它是最好的 FZF 命令之一,它排除了 .gitignore 中的任何内容。

我个人喜欢将其用作默认值。

:help fzf-vim-commands
Run Code Online (Sandbox Code Playgroud)

  • 我认为这是不正确的。`:GFiles` 列出了 git 存储库中添加的所有文件。尚未添加的新文件不会显示。 (5认同)
  • 这并不能回答问题。 (2认同)

doc*_*pus 5

傻我。我忘了source ~/.bash_profile


isA*_*Aif 1

您可以使用fzf.vim

它允许您使用默认的 $FZF_DEFAULT_COMMAND(如果已定义)。

如果您使用 vim-plug 进行插件管理,请安装 fzf.vim:

Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Run Code Online (Sandbox Code Playgroud)