我需要与这个问题完全相反的行为.我的观察是,当按下enter位置列表窗口中的一行时,窗口将被关闭,主窗口将显示所选文件的内容.相反,quickfix窗口没有这种行为,即它在选择后保持打开状态.
我检查了我的autocmd,没有特殊处理位置列表或quickfix列表.
示例 - :lgrep hi *填充位置列表.lopen打开位置列表窗口.按enter任意一行.
默认情况下,Syntastic会在没有错误时关闭位置列表窗口.因此,如果您使用的东西:lgrep不会将任何结果标记为错误,那么一旦您离开位置列表窗口,位置列表窗口将关闭,例如像使用<cr>跳转到某个位置.
Syntastic提供了一种通过g:syntastic_auto_loc_list变量调整此方法的方法.将此设置为0将禁用自动关闭功能.
在vimrc文件中设置以下内容:
let g:syntastic_auto_loc_list = 0
Run Code Online (Sandbox Code Playgroud)
要了解更多有关这个变量见::h 'syntastic_auto_loc_list'.
通常最简单的方法来测试你vimrc或者插件是否会导致问题是它将功能与vanilla vim配置(或者至少更多的vanilla)进行比较.通过在没有vimrc的情况下启动Vim来完成此操作.我使用以下调用:
vim -N -u NONE
Run Code Online (Sandbox Code Playgroud)
一旦你以这种方式启动Vim,你可以测试你的bug并查看它是否存在.
:h :help,:h :helpgrep以及:h bug-reportsvimrc或插件中的某些内容而发生错误.这通常意味着您需要禁用部分vimrc /插件来尝试查找罪魁祸首.一种快速的方法是使用二进制搜索.:verbose通常,通过使用:verbose查看最后设置的内容,可以更容易地直接跟踪错误.(见:h :verbose)
:verbose nmap <leader>foo.见:h :map-verbose和:h map-listing.:verbose set shiftwidth.见:h :set-verbose.:verbose autocmd BufEnter.见:h :autocmd-verbose和:h autocmd-list.'verbosefile'另一种调试方法是使用'verbose'/ :verbose并'verbosefile'有效地记录Vim正在做的事情.
使用:verbose和'verbosefile'调试bug的示例.
:lgrep命令:lopen'verbosefile'通过:set verbosefile=~/verbose.txt:15verbose normal <c-v><cr>:sp ~/verbose.txtclose或lclose在你的情况下autocmd导致结束的功能或功能.autocmd想修改它.:scriptnames以确定与脚本本地函数关联的文件.见:scriptnames和:h <SID>.我发现使用Tim Pope的scriptease.vim可以通过提供为您:Verbose设置的命令'verbosefile'以及之后在预览窗口中打开它来简化此过程.Scriptease还为:scriptnamesvia 提供了一个很好的包装器: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
Run Code Online (Sandbox Code Playgroud)