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

sr4lhrrt  于 2023-05-17  发布在  Git
关注(0)|答案(7)|浏览(235)

我在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设置为show hidden,但忽略node_modules.git

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

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

i34xakig

i34xakig1#

你试过:GFiles命令吗?
它是排除. gitignore中任何内容的最佳FZF命令之一。
就我个人而言,我喜欢将其用作默认值。

:help fzf-vim-commands
ctrmrzij

ctrmrzij2#

您可以通过使用自定义FZF_DEFAULT_COMMAND来忽略node_modules(以及您想要忽略的任何其他文件夹)。我使用这样的东西:
(将其放入Vimrc)
let $FZF_DEFAULT_COMMAND='find . \( -name node_modules -o -name .git \) -prune -o -print'

zbdgwd5y

zbdgwd5y3#

我真傻,我忘了source ~/.bash_profile

wgmfuz8q

wgmfuz8q4#

我想我们是在谈论“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 metch
不包括文件夹和文件我不喜欢我使用-g选项:
rg -g '!design/' -g '!dist/' -g '!pnpm-lock.yaml' -g '!.git' -g '!node_modules'
!要排除
我排除 designdist 文件夹从我的搜索基本路径(当前目录)
并排除il file pnpm-lock.yaml anywhare
和excluse .gitnode_modules anywhare(文件或文件夹)
希望能帮上忙,问候,列奥纳多

oogrdqng

oogrdqng5#

可以使用fzf.vim
它允许您使用默认的$FZF_DEFAULT_COMMAND(如果已定义)。
如果您使用vim-plug管理插件,请安装fzf.vim:

Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
pgx2nnw8

pgx2nnw86#

如果导致:

command failed: rg --files ...

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

sudo apt install ripgrep -y

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

which rg >/dev/null 2>&1 ||
    apt install ripgrep -y
holgip5t

holgip5t7#

添加到shell配置文件中:

export FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix --hidden --follow --exclude .git'

就是这样

相关问题