vim 快速修复列表 : manipulate location?

标签 vim split vimgrep

当我使用 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/

相关文章:

vim - 在 Vimgrep 中的按键映射中使用多个模式

VIM - ftplugin 似乎不起作用

vim - 我可以为单个文件创建 Vim 映射吗?

python - 如何使用 Python 拆分和忽略文件路径字符串中的分隔符

javascript - 在单个索引数组中的数字处分割字符串以形成新的索引 javascript

postgresql - 在 SELECT 中将列值拆分为两列?

linux - 如何永久更改vim编辑器的默认选项?

bash - 使用传递的文件名打开 vi

vimgrep 不区分大小写的文件模式

vim - 我的 vimgrep 搜索没有像我预期的那样运行