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

我已经检查了我的autocmd,并且没有对位置列表或快速修复列表进行特殊处理。

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

最佳答案

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或插件是否引起问题的最简单方法是将功能与普通vim配置(或至少更多普通)进行比较。通过在没有vimrc的情况下启动Vim来执行此操作。我使用以下调用:
vim -N -u NONE

以这种方式启动Vim后,可以测试一下错误并查看它是否存在。
  • 如果该错误仍然存​​在,则意味着它可能是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
    

    10-08 01:55