2010-06-11 71 views
90

有時我會在我的vimrc中嘗試一個自定義/命令。一切都認爲是正確的,但它不起作用。是否有「vim運行時日誌」?

很難知道vim啓動時發生了什麼,並且知道哪個命令失敗了,所以調試可能會導致vimrc中問題的東西真的很困難。這是一種試驗錯誤的方法,耗時且真的是PITA。例如,我遇到問題with snipmate plugin in some files,並且只是沒有關於如何發現問題的線索。

當vim啓動時,是否有「運行時日誌」,告訴它執行哪些命令,哪些命令失敗等等?這會幫助我很多。

回答

120

使用-V [N]選項運行vim會執行一個相當大的運行時日誌,這裏N是調試級別。

vim -V9myVim.log 

將與文件名myVim.log

+0

我喜歡Zyx和你的兩種方法,但是我認爲你的方法更好,因爲它更簡單,只有在cmd中,每次運行時我都可以設置日誌的路徑,而且我不需要「膨脹」我的vimrc。歡迎來到SO! – 2010-06-11 21:47:01

+0

參見[':h'verbose''](http://vimdoc.sourceforge.net/htmldoc/options.html#%27verbose%27)和[':h:verbose'](http:// vimdoc。 sourceforge.net/htmldoc/various.html#:verbose)。 – Palec 2015-10-27 14:32:50

2

我不認爲有一個運行日誌,本身,但你可以在調試模式下運行它。
http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts

+2

這個網站似乎遭到黑客攻擊或東西,用「ToggleVerbose()」函數。在解決問題之前,請參閱http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki.org/Debugging_Vim_Scripts上的緩存版本。 – 2012-12-14 19:43:46

+0

我得到403禁止 – 2017-08-18 05:44:46

+0

@FrankFang http://web.archive.org/web/20090323034339/http://www.troubleshootingwiki。org/Debugging_Vim_Scripts – Jay 2017-08-20 18:54:43

11

當前目錄下創建一個日誌調試級別9的將這個功能到的.vimrc:

function! ToggleVerbose() 
    if !&verbose 
     set verbosefile=~/.log/vim/verbose.log 
     set verbose=15 
    else 
     set verbose=0 
     set verbosefile= 
    endif 
endfunction 

然後創建目錄~/.log/vim並調用ToggleVerbose()得到您的登錄~/.log/vim/verbose.log。請注意,您可能會遇到«變量嵌套得太深以至於顯示»錯誤,這通常不會僅僅因爲您提出了詳細級別而出現。

0

這可能違背了所有的SO代表,但這是我的所作所爲:我剛剛點擊打印屏幕,警告出現並觀看圖片。

+0

暫停按鈕是否具有類似的效果,減去浪費的紙張? – Rook 2012-03-09 23:12:57

+0

直到現在我永遠不知道暫停鍵是什麼。在任何情況下,我不認爲它在Linux中執行任何操作。http://stackoverflow.com/questions/92802/what-is-the-linux-equivalent-to-dos-pause – puk 2012-03-10 01:43:51

+2

FWIW,* nix終端將暫停輸出在Ctrl-S上並在Ctrl-Q上繼續。 – joeytwiddle 2013-06-23 14:36:26

72

:messages顯示vim statusline中出現的所有警告,錯誤和信息性消息(可能是短暫的)。

:echo errmsg打印最近的錯誤消息。

g<是很少有人知道的另一個功能。從:help g<

g<命令可用於查看前一個命令輸出的最後一頁。如果您在命中輸入提示時意外鍵入了<Space>,此功能特別有用。

例如嘗試:!ls然後取消提示,然後點擊g<

0

我不得不添加「設置NOCP」根因爲&運行時詳細