在我的Vim配置中,我同时具有 Ack.vim 和 AsyncRun 插件。至少默认情况下,这两个插件都输出到quickfix
窗口。这对我来说是个问题,因为我需要打开 Ack.vim 结果,然后在处理这些结果的同时执行 AsyncRun 命令。但是一旦执行 AsyncRun ,它就会用输出覆盖 Ack.vim 结果,因此我必须重新运行相同的:Ack
搜索才能显示下一个搜索结果
示例:我的工作流程通常包括使用:Ack
进行搜索,然后我从结果中修改一个文件,写入文件,然后从下一个结果中修改文件,依此类推。但是,我也有autocmd BufWritePost
配置,该配置在写入缓冲区时运行 AsyncRun (例如JS prettier
或Python的yapf
)。因此,一旦我修改了第一个文件并写入了缓冲区, Ack.vim 的输出就会被 AsyncRun 的输出替换。
有没有办法做到这一点?
使用location-list
来代替 Ack.vim 或 AsyncRun ,而不是quickfix
窗口吗?
还是同时有两个quickfix
窗口,每个窗口用于每个插件的输出?
还是什至取消显示 AsyncRun 输出而根本不打开quickfix
呢? (就我而言,在运行yapf
或prettier
时,我真的不需要研究它们的输出)
答案 0 :(得分:2)
查看Ack.vim的文档。还有很多其他命令,例如:LAck
,这些命令将填充位置列表而不是快速修复列表。
quickfix窗口是全局的,因此一次只能有一个。但是,您始终可以使用:cprevious
和:cnext
导航到上一个和下一个快速修复列表。另一方面,位置列表是每个窗口的。
我建议使用:help quickfix
浏览Quickfix和位置列表文档。