假设我有以下映射:
map <F4> :execute "vimgrep /" .expand("<cword>") . "/j **" <Bar> cw<CR>
递归地在当前目录中寻找光标下单词的所有实例,并在quickfix列表窗口中打开这些文件。从quickfix窗口中,如何将我打开的文件启动到一个新选项卡?Enter只会将我的当前缓冲区更改为该新文件。
在创建缓冲区时,Quickfix 窗口命令会考虑 switchbuf
选项。该选项具有 newtab
指示符,它指示Vim在加载要切换的缓冲区之前先打开一个新的标签页。如果通过以下方式将此键添加到选项中:
:set switchbuf+=newtab
快速修复窗口中的条目将在单独的选项卡页面中打开。
此外,还有一个usetab
指示符,在这种情况下可能也很有用。它指示Vim切换到包含显示目标缓冲区的窗口的现有选项卡页,而不是在新选项卡页中重复它。如果需要的话,也可以加上这个指示符:
:set switchbuf+=usetab,newtab
switchbuf
的值也会(部分地)影响其他缓冲区切换命令,例如:bfirst
、:blast
、:sbuffer
、:sbnext
和:sbprevious
。
不妨试试QFEnter插件?
使用该插件,您可以在不改变switchbuf
选项的情况下,在新标签页或新的垂直/水平分割窗口中打开每个项目。
此外,它还允许您通过视觉选择块一次性打开多个quickfix项目。
autocmd FileType qf nnoremap <buffer> <Enter> <C-W><Enter><C-W>T
如果你使用以下方法时,也可以正常工作:
tab copen
如果没有使用set switchbuf+=newtab
,则原本会首先分割窗口。