尝试使用快速修复列表在 Neovim 中导航 git 显示 — :vimgrep /^@@ ~/temp.git.log —“E682 无效搜索模式或分隔符”

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

我的 $HOME 中有文件

tmp.git.log

commit 07f5bbb6a3a112f7b601d6cd1f72ec3f20112920
Author: me
Date:   2024 

    some

    comit

    messages



diff --git path/file.end
index e969a7691b..0bf58bcb94 100644
--- removed
+++ added
@@ -1,7 +1,7 @@
  
    
      
-      removed
+      added
       :key="index"
       label
       :color="color"
@@ -10,11 +10,13 @@
       :class="fontWeight"

等等

我想用更改的开始和结束来填充我的快速修复列表,在行开头用

@@
标记。我尝试执行

:vimgrep /^@@ ~/tmp.git.log

Nvim 的回答是

E682 invalid search pattern or separator

上面的 vimgrep 命令有什么问题?

另外:我可以在未写入的缓冲区中

:vimgrep
,例如非文件?

我想

:read !git show <git-hash>
进入 nvim 以查看某些提交在我的存储库中所做的更改,我不需要保留文件。我知道,有插件,但我想了解 vanilla nvim 在这里可以做什么。

我想在 Neovim 中读取

git show <git-gash>
的结果,并使用 vimgrep 填充快速修复列表。

Vimgrep 无法接受我的搜索

:vimgrep /^@@ ~/tmp.git.log

E682

如何使用添加/删除的文件块位置填充我的快速修复列表以实现更快的导航?

理想情况下,不要先将 git show 结果保存到临时文件中。

git vim neovim vimgrep vim-quickfix
1个回答
0
投票
:vimgrep /^@@ ~/tmp.git.log

上面的 vimgrep 命令有什么问题?

您必须用/

/
(或一对其他字符)
包围
您的图案,按照
:help :vimgrep

:vimgrep /^@@/ ~/tmp.git.log
             ^ you forgot this slash

另外:我可以在未写入的缓冲区中

:vimgrep
,例如非文件?

不。

:grep
:vimgrep
都只能用于搜索文件

在文件中搜索和在缓冲区中搜索的机制不可能完全相同,因为这两个任务位于不同的抽象级别。对于前者,您有非常古老且简单的命令,例如

:vimgrep
,但遗憾的是,后者只有低级命令。

几年前我想出了这个可怕的单行代码,因为我想使用快速修复程序进行缓冲区级搜索,但它只适用于named缓冲区。我想可以使用相同的基本逻辑(从当前缓冲区过滤行),但使用

:help setqflist()
/
:help setloclist()
代替。

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