vim脚本调试

做者:池育龙
时间:01/15/14 23:53:45html

1. 简介

本文介绍vim的脚本调试相关的知识,包括对vim脚本的断点设置、单步执行、日志的输出(runtime log)。vim

2. vim脚本介绍

Vim编辑器的方便体现其的高度可定制化,你能够根据本身的需求编写各类插件、脚原本定制vim编辑器功能,使得它很是个性化,很是贴合你的我的需求。
vim脚本是实现个性化很重要的工具,他的介绍见:Vim 脚本语言,有兴趣能够熟悉一下。vim的官网上也提供了不少颇有用、颇有意思的脚本,能够根据本身的须要选用vim官网脚本区
可是咱们在开始编写的脚本,甚至于一开始安装、配置、使用别人已经写好的脚本时,不少时候都发现结果不原先想象那样,-_-!! 咱们在面对这些问题时,除了能够google、查看手册之外,还可使用本文所介绍的一些vim调试手段来定位问题,并加以解决。避免由于google没法帮忙时就一筹莫展,只能卸载重装、来回折腾还没法解决问题的尴尬局面了。
本文基本内容是vim帮助手册中的内容,另外加上个人一些实际操做,若是我所写的和手册中冲突,以手册为准。若是须要了解更多脚本调试的信息,能够在vim中执行命令:h debug-scripts获得更多的信息.
本文环境为gvim 7.3.46, win7编辑器

3. Vim脚本调试

咱们能够在vim启动时候就开始调试,也能够在启动后,执行某个vim脚本、调用某个vim函数的时候进入调试模式。
咱们能够根据vim函数来设置断点,也能够根据脚本文件行号来设置断点.很是方便。函数

3.1. 背景知识

e:\temp\start gvim.exe -S "%VIMPROJ%\GameServer.vim" 或者 e:\temp\gvim.exe -S "%VIMPROJ%\GameServer.vim" 能够在vim启动以后,自动执行GameServer.vim脚本。工具

3.2. 进入调试

  1. 启动时候进入调试模式

    在 终端模式下,vim在加载第一个 _vimrc 配置文件时候就进入调试模式; 在gui模式下(gvim,Macintosh) ,vim在窗口启动完成以后进入调试模式,若是在gui模式下,想加载第一个 _vimrc 就可以进入调试模式,那就在 _vimrc 第一行加上 :guiui

    e:\temp>gvim -D file.txt,这个命令能够vim启动的时候就进入调试模式,进入调试模式以后,输入 n就能够单步调试。

     

  2. 启动时候,当加载到某一个vim脚本的时候进入调试模式

     

    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行时候,进入到调试模式。

     

  3. vim在调用某个函数时候,进入调试模式

     

    vim启动以后,使用命令breakadd func UPFILE_default.那么当执行 UPFILE_default时候,vim会自动进入调试模式。

4. 调试模式

4.1. 设置、取消断点

:breakadd file [lnum] [name] 在文件(文件名为name),第(lnum)行设置断点。当vim加载到该位置时,会自动进入调试模式。
:breakadd func [lnum] [name] 在函数(函数名为name),第(lnum)行设置断点。当vim加载到该位置时,会自动进入调试模式。
:breaklist 列出当前设置的全部断点。
:breakdel {nr} 删除第(nr)号断点。google

4.2. 调试模式的操做

命令 意义
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

5. 其余

5.1. 运行日志

E:\temp>start gvim.exe -V9{dir/filename} 启动vim而且记录运行日志,日志保存在 dir 路径下的 filename 文件中。 注意:若是不指定路径,那么会存在程序启动路径,比较难找-_-!!
vim中的报警、出错信息、运行记录都会记录在日志中。spa