如何使Vim快速修复列表在新标签页中打开文件?

34

假设我有以下映射:

map <F4> :execute "vimgrep /" .expand("<cword>") . "/j **" <Bar> cw<CR>

递归地在当前目录中寻找光标下单词的所有实例,并在quickfix列表窗口中打开这些文件。从quickfix窗口中,如何将我打开的文件启动到一个新选项卡?Enter只会将我的当前缓冲区更改为该新文件。

3个回答

92

在创建缓冲区时,Quickfix 窗口命令会考虑 switchbuf 选项。该选项具有 newtab 指示符,它指示Vim在加载要切换的缓冲区之前先打开一个新的标签页。如果通过以下方式将此键添加到选项中:

:set switchbuf+=newtab

快速修复窗口中的条目将在单独的选项卡页面中打开。

此外,还有一个usetab指示符,在这种情况下可能也很有用。它指示Vim切换到包含显示目标缓冲区的窗口的现有选项卡页,而不是在新选项卡页中重复它。如果需要的话,也可以加上这个指示符:

:set switchbuf+=usetab,newtab

switchbuf的值也会(部分地)影响其他缓冲区切换命令,例如:bfirst:blast:sbuffer:sbnext:sbprevious


哇,最好的答案了。这恰好是我希望实现的!“usetab”选项也非常方便!谢谢你 ∞ - tester

7

不妨试试QFEnter插件?
使用该插件,您可以在不改变switchbuf选项的情况下,在新标签页或新的垂直/水平分割窗口中打开每个项目。
此外,它还允许您通过视觉选择块一次性打开多个quickfix项目。


我喜欢你的插件。如果你有 Ack 插件所有的映射,甚至是相同的话,它会更好:https://github.com/mileszs/ack.vim#keyboard-shortcuts。我还想打开一个没有快速修复窗口的新标签页。 - Ciro Santilli OurBigBook.com
谢谢。您可以将 g:qfenter_enable_autoquickfix 设置为 0,以避免在新标签页中打开 quickfix。 - yssl

7

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接