Syntastic 和位置列表窗口
合成的 https://github.com/scrooloose/syntastic默认情况下,当不存在错误时关闭位置列表窗口。因此,如果你使用类似的东西:lgrep
它不会将任何结果标记为错误,然后一旦您离开位置列表窗口,位置列表窗口就会关闭,例如喜欢使用<cr>
跳转到某个位置。
Syntastic 提供了一种通过以下方式进行调整的方法g:syntastic_auto_loc_list
多变的。将其设置为0
将禁用自动关闭功能。
在您的中设置以下内容vimrc
file:
let g:syntastic_auto_loc_list = 0
要了解有关此变量的更多信息,请参阅::h 'syntastic_auto_loc_list'
.
通用 Vim 调试
通常是测试您是否vimrc
或者某个插件导致问题,因为它将功能与普通 vim 配置(或至少更普通)进行比较。通过在没有 vimrc 的情况下启动 Vim 来完成此操作。我使用以下调用:
vim -N -u NONE
一旦你以这种方式启动 Vim,你就可以测试你的 bug 并看看它是否存在。
- 如果错误仍然存在,则意味着它可能是 Vim 本质的一部分或 Vim 本身的错误。在这种情况下,我建议您更多地阅读文档
:h :help
, :h :helpgrep
, and :h bug-reports
- 如果错误不存在,则错误是由于您的某些内容而发生的
vimrc
或插件。这通常意味着您需要禁用 vimrc/插件的部分内容才能尝试找到罪魁祸首。一种快速的方法是使用二分搜索。
调试稍微复杂一点:verbose
通常,通过使用更容易直接追踪错误:verbose
查看最后设置的位置。 (看:h :verbose
)
- 映射将显示上次设置的位置。例如
:verbose nmap <leader>foo
. See :h :map-verbose
and :h map-listing
.
- 设置也会显示上次设置的位置。例如
:verbose set shiftwidth
. See :h :set-verbose
.
- Autocomd 将显示它们最后定义的位置。例如
:verbose autocmd BufEnter
. See :h :autocmd-verbose
and :h autocmd-list
.
高级调试'verbosefile'
调试某些东西的另一种方法是使用'verbose'
/:verbose
and 'verbosefile'
有效地记录 Vim 正在做什么。
使用示例:verbose
and 'verbosefile'
调试你的错误。
- Do
:lgrep
command
- 通过以下方式打开位置列表窗口
:lopen
- Set
'verbosefile'
via :set verbosefile=~/verbose.txt
:15verbose normal <c-v><cr>
- 现在通过打开日志文件
:sp ~/verbose.txt
- 搜索日志文件中是否有任何可疑内容。例如
close
or lclose
在你的情况下
- 一旦找到,它会向您显示
autocmd
或导致关闭的函数。
- If
autocmd
看看修改一下。
- 如果您可能需要查看某个功能
:scriptnames
找出与脚本本地函数关联的文件。看:scriptnames
and :h <SID>
.
我发现使用蒂姆·波普的脚本易.vim https://github.com/tpope/vim-scriptease通过提供使这个过程变得更容易:Verbose
将设置的命令'verbosefile'
以及随后在预览窗口中打开它。 Scriptease 还提供了一个很好的包装器:scriptnames
via :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