如何使用 VIM 搜索项目的所有文件?

问题描述 投票:0回答:5

有几件事我还不明白 VIM 方式。

其中之一是在像这样的项目中搜索(在 Atom 中使用 VIM):

enter image description here

我目前使用 CtrlP 作为文件名,但是内容呢?

如何使用字符串进行搜索,然后使用 VIM 和/或 VIM 插件查看所有出现的事件的列表?

search vim neovim
5个回答
104
投票

我找到了一个更好的解决方案:FZF

它只是使用

:Ag
命令异步搜索项目中的所有内容。

enter image description here


43
投票

使用

:grep
:vimgrep
搜索文件内容。结果将放入“位置列表”中,您可以通过键入
:cw
Enter 打开该列表。

默认情况下,

:grep
的语法与
grep(1)
命令相同:

:grep 'my pattern.*' /path/to/dir

默认情况下,它将搜索当前目录(

:pwd
)。我将
set autochdir
添加到我的 .vimrc 中,这样我的 PWD 始终跟随我正在编辑的文件。

:grep
:vimgrep
之间的主要区别在于
:vimgrep
(简称
:vim
)使用 Vim 兼容的正则表达式,而
:grep
使用
&grepprg
使用的任何正则表达式。

您可以通过将

&grepprg
设置为不同的内容来使用自定义程序。我个人喜欢 ack,它使用 Perl 兼容的正则表达式 (PCRE)。其他类似 grep 的程序也可用,这取决于您。

" .vimrc
" To get ack, use:
" $ curl https://beyondgrep.com/ack-v3.7.0 > ~/bin/ack && chmod +x ~/bin/ack
if executable('ack')
    " Use ack over grep (automatically ignores *~)
    set grepprg=ack\ --nogroup\ --nocolor
endif

9
投票

除了fzf之外,还有其他优秀的模糊查找插件。

  • telescope.nvim(仅限 neovim):安装后,只需使用
    Telescope live_grep
    搜索您的项目。
  • Leaderf:另一个性能良好的模糊查找器。安装后,使用
    Leaderf rg
    搜索您的项目。

1
投票

要打开文件,我会突出显示位置列表中的行 (Shift-v),然后按 Enter 键。


1
投票

如果您使用 Neovim,更好的解决方案是使用 telescope.nvimBurntSushi/ripgrep 建议的依赖项,您可以使用

live_grep
grep_string
以及
find_files

© www.soinside.com 2019 - 2024. All rights reserved.