作者:池育龍
時間:01/15/14 23:53:45
1. 簡介
本文介紹vim的腳本調試相關的知識,包括對vim腳本的斷點設置、單步執行、日志的輸出(runtime log)。
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. 進入調試
- 啟動時候進入調試模式
在 終端模式下,vim在加載第一個 _vimrc 配置文件時候就進入調試模式; 在gui模式下(gvim,Macintosh) ,vim在窗口啟動完成之后進入調試模式,如果在gui模式下,想加載第一個 _vimrc 就能夠進入調試模式,那就在 _vimrc 第一行加上 :gui
e:\temp>gvim -D file.txt
,這個命令可以vim啟動的時候就進入調試模式,進入調試模式之后,輸入n
就可以單步調試。
- 啟動時候,當加載到某一個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行時候,進入到調試模式。
- 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)號斷點。
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中的報警、出錯信息、運行記錄都會記錄在日志中。