做者:池育龍
時間: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