做者:池育龙
时间:01/15/14 23:53:45html
本文介绍vim的脚本调试相关的知识,包括对vim脚本的断点设置、单步执行、日志的输出(runtime log)。vim
Vim编辑器的方便体现其的高度可定制化,你能够根据本身的需求编写各类插件、脚原本定制vim编辑器功能,使得它很是个性化,很是贴合你的我的需求。
vim脚本是实现个性化很重要的工具,他的介绍见:Vim 脚本语言,有兴趣能够熟悉一下。vim的官网上也提供了不少颇有用、颇有意思的脚本,能够根据本身的须要选用vim官网脚本区。
可是咱们在开始编写的脚本,甚至于一开始安装、配置、使用别人已经写好的脚本时,不少时候都发现结果不原先想象那样,-_-!! 咱们在面对这些问题时,除了能够google、查看手册之外,还可使用本文所介绍的一些vim调试手段来定位问题,并加以解决。避免由于google没法帮忙时就一筹莫展,只能卸载重装、来回折腾还没法解决问题的尴尬局面了。
本文基本内容是vim帮助手册中的内容,另外加上个人一些实际操做,若是我所写的和手册中冲突,以手册为准。若是须要了解更多脚本调试的信息,能够在vim中执行命令:h debug-scripts
获得更多的信息.
本文环境为gvim 7.3.46, win7编辑器
咱们能够在vim启动时候就开始调试,也能够在启动后,执行某个vim脚本、调用某个vim函数的时候进入调试模式。
咱们能够根据vim函数来设置断点,也能够根据脚本文件行号来设置断点.很是方便。函数
e:\temp\start gvim.exe -S "%VIMPROJ%\GameServer.vim"
或者 e:\temp\gvim.exe -S "%VIMPROJ%\GameServer.vim"
能够在vim启动以后,自动执行GameServer.vim脚本。工具
在 终端模式下,vim在加载第一个 _vimrc 配置文件时候就进入调试模式; 在gui模式下(gvim,Macintosh) ,vim在窗口启动完成以后进入调试模式,若是在gui模式下,想加载第一个 _vimrc 就可以进入调试模式,那就在 _vimrc 第一行加上 :guiui
e:\temp>gvim -D file.txt
,这个命令能够vim启动的时候就进入调试模式,进入调试模式以后,输入 n
就能够单步调试。
E:\temp>start gvim.exe -c "breakadd file */InitCPP.vim" -S "%VIMPROJ%\GameServer.vim"
.启动以后,加载到 InitCPP.vim文件时,进入到调试模式。这个命令在定位新安装的脚本没法正常工做时候很是有用,注意,这里文件使用的是通配符,加入在启动时候须要加载不一样目录,多个InitCPP.vim,那么会在加载第一个时候进入调试模式E:\temp>start gvim.exe -c "breakadd file 69 */InitCPP.vim" -S "%VIMPROJ%\GameServer.vim"
.启动后,加载到InitCPP.vim第69行时候,进入到调试模式。
vim启动以后,使用命令
breakadd func UPFILE_default
.那么当执行 UPFILE_default时候,vim会自动进入调试模式。:breakadd file [lnum] [name]
在文件(文件名为name),第(lnum)行设置断点。当vim加载到该位置时,会自动进入调试模式。:breakadd func [lnum] [name]
在函数(函数名为name),第(lnum)行设置断点。当vim加载到该位置时,会自动进入调试模式。:breaklist
列出当前设置的全部断点。:breakdel {nr}
删除第(nr)号断点。google
命令 | 意义 | |
---|---|---|
cont | continue 继续 | |
quit | quit | |
next | next | |
step | step | |
finish | 结束当前调试模式,等待下一次再次进入调试模式 | |
echo idx | 查看变量idx的值 | |
echo g:idx | 查看全局变量idx的值 | |
echo g:idx | 查看全局变量idx的值 | |
set verbose=20 | 设置verbose变量的值20 | |
set verbose=20 | 设置verbose变量的值20 |
E:\temp>start gvim.exe -V9{dir/filename}
启动vim而且记录运行日志,日志保存在 dir 路径下的 filename 文件中。 注意:若是不指定路径,那么会存在程序启动路径,比较难找-_-!!
vim中的报警、出错信息、运行记录都会记录在日志中。spa