16

我在 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'
    \ }

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

export FZF_DEFAULT_COMMAND='rg --files --follow --no-ignore-vcs --hidden -g "!{node_modules/*,.git/*}"'

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

4

6 回答 6

19

你试过:GFiles命令吗?

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

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

:help fzf-vim-commands
于 2020-06-18T11:35:36.480 回答
7

傻我。我忘了source ~/.bash_profile

于 2020-05-18T09:58:40.240 回答
2

我想我们正在谈论“junegunn/fzf”。
我在使 fzf 和 rg 满足我的需要方面取得了成功。(我是开发人员)
这是我的 vim 8.2 配置:

command! -bang -nargs=* Rg
  \ call fzf#vim#grep(
  \   "rg -g '!design/' -g '!dist/' -g '!pnpm-lock.yaml' -g '!.git' -g '!node_modules' --column --line-number --no-heading --color=always --smart-case ".shellescape(<q-args>), 1,
  \   fzf#vim#with_preview({'options': '--exact --delimiter : --nth 4..'}), <bang>0)

在最后一行内的此配置中,--exact删除所有模糊搜索:我如何开发人员我更喜欢 exatc 匹配

不包括我不喜欢使用的文件夹和文件-g选项:

rg -g '!design/' -g '!dist/' -g '!pnpm-lock.yaml' -g '!.git' -g '!node_modules'

!是排除
我从我的搜索基本路径(当前目录)中排除designdist
文件夹 并排除 il 文件pnpm-lock.yaml anywhare
并排除.gitnode_modules anywhare (文件或文件夹)

希望可以帮助,问候,莱昂纳多

于 2021-05-17T13:19:47.440 回答
1

如果它导致:

command failed: rg --files ...

这是因为它是由rg错误导致的,或者您没有安装它,因此您只需执行

sudo apt install ripgrep -y

如果您使用脚本进行安装,您可以使用:

which rg >/dev/null 2>&1 ||
    apt install ripgrep -y
于 2021-02-10T04:19:07.540 回答
1

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

(把它放在你的 vimrc 中)

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

于 2021-11-17T03:40:47.067 回答
1

你可以使用fzf.vim

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

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

Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
于 2020-05-18T09:17:13.797 回答