gpt4 book ai didi

vim - 管道 ripgrep 搜索结果到 vim 并在确切的搜索位置打开文件

转载 作者:行者123 更新时间:2023-12-03 13:44:59 25 4
gpt4 key购买 nike

rg -l "searched phrase" | xargs vim

用搜索过的词填充 vim,但我需要再次搜索它们,这次是在 vim 中。

如何将 ripgrep 搜索结果通过管道传送到 vim,以便在确切的搜索位置(行和列)打开搜索到的文件?

最佳答案

根据 Filling the quickfix window from stdin?您可以执行以下操作:

rg --vimgrep 'pat' | vim -q /dev/stdin

您需要供应 --vimgrep将 ripgrep 的输出转换为 Vim 的正确格式。 -q将文件读入 quickfix 列表。

或者

通过 :grep 从 Vim 内部进行搜索

将以下内容添加到您的 vimrc文件:
set grepprg=rg\ --vimgrep
set grepformat^=%f:%l:%c:%m

现在你可以做 :grep 'pattern'它将填充快速修复列表。重做搜索就像 :grep 一样简单其次是一些 <up>按返回到您的相关 :grep .

快速修复命令
  • :cnext/:cprevious在快速修复列表中向前和向后导航快速修复
  • :cfirst/:clast跳转到快速修复列表的开头和结尾
  • 使用 :copen打开快速修复窗口。使用 <cr>跳转到条目
  • 使用 :cclose关闭快速修复窗口
  • 使用 :cc显示当前错误。
  • :colder/:cnewer跳转较旧/较新的快速修复列表

  • 我建议您为 :cnext 创建映射和 :cprevious .我个人使用 unimpaired.vim提供 ]q & [q :cnext 的映射和 :cprevious .

    如果您希望快速修复窗口自动打开,请将以下内容放入您的 vimrc :
    augroup autoquickfix
    autocmd!
    autocmd QuickFixCmdPost [^l]* cwindow
    autocmd QuickFixCmdPost l* lwindow
    augroup END

    有一个 Vimcasts关于这个话题的剧集: Search multiple files with :vimgrep .

    项目范围的搜索和替换

    如果您正在使用 :grep/ :vimgrep作为方式做 project-wide search and replace那我建议你用 :cdo/ :cfdo (在 Vim 7.4.980+ 中)。
    :grep 'foo'
    :cfdo %s/foo/bar/g|w

    如需更多帮助,请参阅:
    :h :grep
    :h 'grepprg'
    :h quickfix
    :h :cnext
    :h :copen
    :h :ccl
    :h :cc
    :h :colder
    :h :cdo
    :h :cfdo

    关于vim - 管道 ripgrep 搜索结果到 vim 并在确切的搜索位置打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55303484/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com