当我使用 vim 时,我偶尔会遇到这样的拆分菜单设置:
###############################################
# | | #
# | | #
# NERDTree | main window | tagbar #
# | | #
# | | #
###############################################
即使tagbar已关闭,我可能会得到一个可比较的设置,例如当我比较不同的文件时。
但是,当我执行 vimgrep 命令时,结果(显示在快速修复列表中)仅在标签栏(或右侧的其他拆分)关闭时显示在主窗口下方。
因此,此设置每次都能正常工作:
###############################################
# | #
# | #
# NERDTree | main window #
# | #
# | #
# |__________________________________#
# | #
# | quickfix list: vimgrep results #
# | #
###############################################
...虽然这不是:
###############################################
# | | #
# | | #
# NERDTree | main window | tagbar #
# | | #
# | |________#
# | | quick- #
# | | fix #
# | | list: #
# | | vimgrep#
# | | results#
###############################################
如何强制快速修复列表始终在主窗口下方打开(包含 vimgrep 结果) ?
目前,当且仅当 - 主窗口右侧没有其他拆分窗口时,它才会正确打开(在主窗口下方)。
如果主窗口存在任何拆分,vimgrep 命令总是在那里打开 quickfix :/
我已经使用 vimgrep 命令绑定(bind)搜索当前光标下的单词(在整个文件中搜索这个单词):
nnoremap some-key :execute "vimgrep /\\<" . expand("<cword>") . "\\>/j ".expand("%") <Bar> cw<CR>
...只是为了展示我在用 vimgrep 做什么。
最佳答案
遗憾的是,Vim 没有 project drawer 的概念。只是 window (拆分)。使用命令打开 Quickfix 列表后,例如:copen
或 :cwindow
,最好先关闭然后再打开 NerdTree 和 Tagbar。像这样的东西:
command! Copen copen|NERDTreeToggle|TagbarClose|TagbarOpen
注意:我没有测试过这个命令,因为我没有 NERDTree 或 Tagbar 插件。这也使标签栏窗口聚焦,这可能是不希望的。
或者,您可能希望通过保持 tagbar 和 nerdtree 都关闭来简化您的工作流程,除非您正在使用它们。这对于某些工作流来说是有意义的,因为需要查看标签或文件结构可能相对不常见(可能是 10% 的时间)。对于标签,您可以完全避免使用标签栏并使用
:tag
直接命令或使用<c-]>
如果你在一个符号上。可以像 netrw 一样使用 Nerdtree 来避免这个问题(参见 Oil and vinegar - split windows and the project drawer)。我在帖子中谈到了这些问题:Files, Buffers, and Splits Oh My!就我个人而言,我不使用 NerdTree、Tagbar 或任何类似的东西。我更喜欢一次打开 1-2 个拆分。我用 projectionist.vim , 像 CtrlP 这样的模糊查找器,
:find
,或者如果我真的必须上网。
关于vim 快速修复列表 : manipulate location?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37309122/