我想了解更多关于在vim中调试的知识。vim有哪些功能可以帮助我诊断出我可能遇到的问题?
我基本上想知道:
.vimrc和其他配置文件的问题?发布于 2014-02-14 05:30:45
如何诊断.vimrc和其他配置文件的问题?
如果您在vim中有一些意想不到的行为,并且不确定问题的根源是什么,那么有几种方法可以解决问题的根源。最好的第一步是找出您的问题是正常的vim行为,是由插件引起的还是由您的.vimrc引起的。
如果您的vim实例正在设置一个特定的'option',并且您不确定在哪里设置它。您可以使用:verbose命令查找答案。例如
:verbose set nocompatible?
nocompatible
Last set from ~/.vimrc在没有任何插件或配置文件的情况下运行vim实例
vim -N -u NONE我在我的cleanvim文件中将其设置为名为.bashrc的别名。-u NONE就是这里的魔力所在。-N简单地将vim转换为nocompatible模式,这通常是需要的。您还可以使用选项NORC只排除您的vimrc。请注意,如果您使用病原体或vundle从您的vimrc内实例化您的插件,那么您的插件也将无法正确加载。
如果您使用的插件管理器,如病原体或vundle,那么排除您的插件很简单,只需注释掉您的.vimrc中调用病原体或vundle的行。但是,如果从.vim目录中加载了其他插件,则可以使用--noplugin标志排除它们。
如果您的问题是由一个插件引起的,试着一个一个地添加回插件,以确定是哪个插件导致了问题。在那里,您可以向插件的维护人员报告错误,也可以使用这个答案的其他提示来自己诊断问题。
如果您的问题是由您的.vimrc引起的,那么有一些方法可以进一步解决这个问题。一种简单的方法是在您的finish中的某个点添加.vimrc命令。一旦遇到这个命令,脚本就会停止来源,并且在它执行之后没有任何命令。通过这种方式,您可以排除.vimrc的大部分内容,并试图找出问题来源的一般区域。
在VimL中调试脚本的策略是什么?
Vim在:h debug-scripts上有一个关于这个主题的帮助部分。这将详细描述vim的调试模式,它将允许您设置断点并逐步遍历源文件或用户函数。可以在特定函数或文件中的特定行上添加断点。比如说..。
" set a breakpoint on the function MyCoolFunc
:breakadd func MyCoolFunc
" set a breakpoint on line 43 of your .vimrc
:breakadd file 43 .vimrc
" set a breakpoint at this location
:breakadd here设置断点后,可以再次来源文件,以便在该行中开始调试模式。如果希望对整个文件使用调试模式,请使用-D标志启动vim。还可以在特定命令上运行调试模式。例如,假设您遇到了特定命令:MyCommand的问题。您可以使用:debug MyCommand在此命令上启动调试模式。
一旦启动了调试模式,就可以使用通常的vim命令集。这很有用,因为您现在可以使用echo命令检查变量的值,以尝试诊断问题。您还可以使用verbose选项提供有关以下行的额外信息。有关选项,请参见:h 'verbose'。
发布于 2014-02-14 11:43:21
发布于 2014-02-14 10:48:58
对于vimL,我觉得这两个插件很棒:
我还使用它快速获取所选的vimL行:
fu! SourceRange() range
let tmpsofile = tempname()
call writefile(getline(a:firstline, a:lastline), l:tmpsofile)
execute "source " . l:tmpsofile
call delete(l:tmpsofile)
let n = a:lastline - a:firstline + 1
echo 'Sourced ' . n . ' line' . (n > 1 ? 's' : '')
endf
com! -range Source <line1>,<line2>call SourceRange()
nn gs m`:Source<cr>``
vn gs m`:Source<cr>``https://stackoverflow.com/questions/21771522
复制相似问题