我需要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后,可以测试一下错误并查看它是否存在。
: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
。 :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
打开日志文件close
或lclose
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