2010-06-11 79 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”根因为&运行时详细