Vim:选择文件后保持位置列表窗口打开

时间:2015-09-04 19:44:15

标签: vim

我需要this question完全相反的行为。我的观察是,在位置列表窗口中的某一行上按enter后,窗口将关闭,主窗口将显示所选文件的内容。相反,quickfix窗口没有这种行为,即它在选择后仍保持打开状态。

我已经检查了我的autocmd,并且没有针对位置列表或quickfix列表的特殊处理。

示例 - :lgrep hi *填充位置列表。 lopen打开位置列表窗口。在任意一行按enter

2 个答案:

答案 0 :(得分:5)

Syntastic和位置列表窗口

默认情况下,

Syntastic会在没有错误时关闭位置列表窗口。因此,如果您使用:lgrep之类的内容并未将任何结果标记为错误,那么一旦您离开位置列表窗口,位置列表窗口将关闭,例如,比如使用<cr>跳转到某个位置。

Syntastic提供了一种通过g:syntastic_auto_loc_list变量调整此方法的方法。将其设置为0将禁用自动关闭功能。

vimrc文件中设置以下内容:

let g:syntastic_auto_loc_list = 0

要详细了解此变量,请参阅::h 'syntastic_auto_loc_list'

通用Vim调试

测试你的vimrc或插件是否导致问题的最简单方法通常是将功能与vanilla vim配置(或至少更多的vanilla)进行比较。通过在没有vimrc的情况下启动Vim来完成此操作。我使用以下调用:

vim -N -u NONE

一旦你以这种方式启动Vim,你可以测试你的bug并查看它是否存在。

  • 如果错误仍然存​​在,那么这意味着它可能是Vim性质的一部分或Vim本身的错误。在这种情况下,我建议您通过:h :help:h :helpgrep:h bug-reports
  • 更多地阅读文档
  • 如果错误不存在,则由于vimrc或插件中的某些内容而发生错误。这通常意味着您需要禁用部分vimrc /插件来尝试查找罪魁祸首。一种快速的方法是使用二进制搜索。

使用:verbose

进行稍微复杂的调试

通过使用:verbose查看上次设置的位置,通常可以更容易地直接追踪错误。 (见:h :verbose

  • 如果它们是最后一组,则会显示映射。例如:verbose nmap <leader>foo。请参阅:h :map-verbose:h map-listing
  • 设置也会显示上次设置的位置。例如:verbose set shiftwidth。请参阅:h :set-verbose
  • Autocomd将显示最后定义的位置。例如:verbose autocmd BufEnter。请参阅:h :autocmd-verbose:h autocmd-list

使用'verbosefile'

进行高级调试

另一种调试方法是使用'verbose' / :verbose'verbosefile'来有效记录Vim正在做的事情。

使用:verbose'verbosefile'调试错误的示例。

  • 执行:lgrep命令
  • 通过:lopen
  • 打开位置列表窗口
  • 通过'verbosefile'
  • 设置:set verbosefile=~/verbose.txt
  • :15verbose normal <c-v><cr>
  • 现在通过:sp ~/verbose.txt
  • 打开日志文件
  • 在日志文件中搜索可疑内容。例如在你的情况下closelclose
  • 一旦找到,它将显示导致结束的autocmd或功能。
  • 如果autocmd希望修改它。
  • 如果是某个函数,您可能需要查看:scriptnames以找出与脚本本地函数关联的文件。请参阅:scriptnames:h <SID>

我发现使用Tim Pope scriptease.vim通过提供:Verbose命令为您设置'verbosefile'以及之后在预览中打开它,可以简化此过程窗口。 Scriptease还通过:scriptnames:Scriptnames周围提供了一个很好的包装器。通常,scriptease.vim提供了许多有用的方法来调试和重新加载插件。

更多帮助

:h 'syntastic_auto_loc_list'
:h syntastic
:h -u
:h -N
:h :help
:h :helpgrep
:h bug-reports
:h :map
:h map-listing
:h :set
:h set-option
:h :set-verbose
:h :autocmd-verbose
:h autocmd-list
:h 'verbose'
:h :verbose
:h 'verbosefile'
:h :scriptnames
:h <SID>
:h :normal
:h c_CTRL-V

答案 1 :(得分:0)

使用:cw获取quickfix窗口。它将显示为水平拆分到当前窗口。 和:ccl返回选择的结果