将 ripgrep 搜索结果通过管道传输到 vim 并在确切的搜索位置打开文件

2024-02-04

rg -l "searched phrase" | xargs vim

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

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


根据从标准输入填充快速修复窗口? https://www.reddit.com/r/vim/comments/7ieb3p/filling_the_quickfix_window_from_stdin/您可以执行以下操作:

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

您需要提供--vimgrep将 ripgrep 的输出转换为 Vim 的正确格式。-q将文件读入快速修复列表。

或者

通过以下方式从 Vim 内部进行搜索:grep

将以下内容添加到您的vimrc file:

set grepprg=rg\ --vimgrep
set grepformat^=%f:%l:%c:%m

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

快速修复命令

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

我建议您创建映射:cnext and :cprevious。我个人使用未受损.vim https://github.com/tpope/vim-unimpaired它提供了]q & [q映射为:cnext and :cprevious.

如果您希望快速修复窗口自动打开,请将以下内容放入您的vimrc:

augroup autoquickfix
    autocmd!
    autocmd QuickFixCmdPost [^l]* cwindow
    autocmd QuickFixCmdPost    l* lwindow
augroup END

有一个Vimcasts http://vimcasts.org/关于这个主题的剧集:使用 :vimgrep 搜索多个文件 http://vimcasts.org/episodes/search-multiple-files-with-vimgrep/.

项目范围的搜索和替换

如果您正在使用:grep/:vimgrep作为做一个项目范围内的搜索和替换 http://vimcasts.org/episodes/project-wide-find-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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 ripgrep 搜索结果通过管道传输到 vim 并在确切的搜索位置打开文件 的相关文章

  • Vim 滚动时保持光标位置

    有没有办法在滚动时使 Vim gVim 中的 cusror 位置保持在屏幕外 与许多 Windows 编辑器类似 我了解标记 并且确实使用它们 我也知道 标记 最后编辑位置 但正在寻找其他想法 我问这个问题是因为有时我想将光标保留在某个位置
  • vim可以实时监控文件的变化吗

    我的问题与此类似如何实时监控文本文件 https stackoverflow com questions 18632 how to monitor a text file in realtime但我想在vim中做 我知道我可以读取打开的文件
  • 如何让 git 在 vi​​m 中显示更改,就像 hg 使用 hgeditor 脚本那样?

    Mercurial 的一个有趣的功能是能够查看将在 vim split 中提交的更改 请参阅VIM 中的 DiffsInCommitMessage https www mercurial scm org wiki DiffsInCommit
  • 使用 Webpack 波形符别名时通过 Vim 中的“gf”解析 JavaScript 模块

    我是使用波浪号的 Vue js 项目的新成员 模块导入中的符号 如 import WhateverApi from api whatever 项目存储库包含所有类型的文件 Vagrant 机器 Laravel 后端应用程序 配置文件和 Vu
  • 选项卡视觉选择

    In many GUIs when I select a section of text and then hit the Tab or Shift Tab button the selected section will indent i
  • 为什么 "map! :q " 在 vi​​m 中不起作用?

    I input map
  • 如何取消 Vim 中的粘贴操作?

    每当我不小心在 Putty 中右键单击 打开 Vim 时 我的剪贴板上就有相当多的文本 并且 Vim 启动了粘贴操作 该操作已经持续了大约十分钟 我不想丢失未保存的工作 有没有办法指示 Vim 停止粘贴文本 If you re in nor
  • 我可以使用 VIM 查看 Python 中函数的文档字符串吗?

    在 VIM 中编写 Python 时 有什么方法可以查看函数的文档字符串吗 例如 def MyFunction spam A function that foobars the spam returns eggs return foobar
  • 有没有办法用 Vim 自动重新格式化大括号?

    我想重新格式化一些代码 如下所示 if cond foo to if cond foo 由于这是C代码 所以我一直在看cindent cinoptions与使用 但它似乎不处理多行规则 我一直在看formatoptions与使用gq 而且似
  • 在 VIM 中缩进文件夹中的所有文件

    我有一个包含数百个 TTL TeraTermLanguage 文件的文件夹 现在我想缩进所有这些文件 我已经创建了用于缩进的 teraterm vim 并使用 VIM 打开一个文件并执行 gg G 整个文件得到了正确的缩进 但是有什么方法可
  • VIM:在窗口顶部显示自定义参考栏

    我想设置一个 vim 环境来使用基本的 HTML 编辑 由其他人 为此 我想设置一个快速参考栏 显示在窗口顶部 例如
  • Pathogen 不加载插件

    病原体对我不起作用 我正在遵循 Adam Lowe 发布的提示here http www adamlowe me 2009 12 vim destroys all other rails editors html 还有更多 没有任何成功 我
  • 在 Vim 中的缩进线上按“Home”

    我有一个坏习惯 就是使用 home 键返回到行首 当我最近开始使用 vim 时 我注意到当我在缩进的行上按 home 键时 它会让我回到该行的开头 在 Notepad 我曾经使用的编辑器 中 它会让我返回到该行代码的开头 就在缩进之后 有没
  • 以 Vim 的 -o - 模式打开 Grep 输出中的文件

    如何将文件列表放入 Vim 的 o 模式 我有一个文件列表作为 Grep 的输出 我运行失败 1 grep il sid vim o 2 grep il sid xargs vim o 3 grep il sid xargs vim 4 v
  • 带有 Viper 和 Vimpulse 的 Emacs 缺少哪些 Vim 功能?

    Emacs 的一些重要功能在 Vim 中是缺失的 例如 comint 模式 并且没有脚本 插件可以替代它们 与 Emacs 相比 Vim 也有一些优点 例如模式编辑和通常更好的默认快捷键 然而 Viper 模式让我两者兼而有之 Vimpul
  • vim 映射键不起作用

    我一直在尝试映射 ctrl 来在 vim 的插入模式下保存 它似乎永远不起作用 http vim wikia com wiki Map Ctrl S to save current or new files http vim wikia c
  • 在键盘快捷键上插入预定义文本

    我经常插入binding pry当我调试我的 ruby 文件时 当我使用 Vim 时 我希望将其自动化 以避免每次都重新输入 我怎样才能做到呢 我想要映射的确切顺序是 插入新行 Insert binding pry到新创建的行 返回正常模式
  • vim 退出时恢复 shell

    我刚刚在我的新计算机上安装了 Arch 但我不知道需要向 vimrc 添加什么命令 以便它在退出时恢复 shell 内容 在调用 vim 之前 也就是说 我希望我的 shell 看起来像这样 whoami root who root tty
  • 使 'n' 始终向前搜索,无论是否 / 或 ?用于搜索

    我几乎总是在 Vim 中搜索 然后继续向前搜索n并向后N 然而 有时我会使用 跳转到我当前所在行上方几行的项目 在这种情况下 如果我想向前搜索同一项目 我必须使用N代替n 令人烦恼的心理减速带 所以我的问题是 是否有可能使n永远向前走 并且
  • 如何在VIM中设置文件的正确路径?

    每当我击中 pwd在 vim 中命令总是返回路径C Windows system32 即使我在桌面上的 Python 文件中 所以每当我跑步时 python 命令返回 python can t open file Users myname

随机推荐