我想验证我的~/.vimrc
文件是否正确,基本上只需启动vim
并立即运行quit
.我几乎可以用 来做到这一点vim -c quit
,只是我必须按 Enter 键。例如,
> cat ~/.vimrc
echoerr 'test'
> vim -c quit
Error detected while processing /home/josh/.vimrc:
line 1:
test
Press ENTER or type command to continue
有没有一种方法可以在不按 Enter 的情况下执行此操作?我想我可以运行echo | vim -c quit
,但我希望有一个更优雅的解决方案。
答案1
您可以使用 try-catch 块来捕获错误(会转换为异常),并在任何异常上失败:
$ cat vimrc-fail
echoerr 'test'
$ cat vimrc-pass
echo 'test'
$ vim -u NONE -c 'try | source vimrc-pass | catch | cq | endtry | q'; echo $?
0
$ vim -u NONE -c 'try | source vimrc-fail | catch | cq | endtry | q'; echo $?
1
来自帮助:
:try :try :endt :endtry E600 E601 E602
:endt[ry] Change the error handling for the commands between
":try" and ":endtry" including everything being
executed across ":source" commands, function calls,
or autocommand invocations.
并从:echoerr
:
当在 try 条件内部使用时,该消息将作为错误异常引发(请参阅尝试回声)。
其他注意事项:
-u NONE
防止获取默认的 vimrcs:cq
使 Vim 返回非零退出状态
要获取最后一条错误消息(现在实际上是一个异常),请使用v:exception
:
$ vim -u NONE -c 'try | source vimrc-fail | catch | silent exec "!echo " shellescape(v:exception) |cq | endtry | q'; echo $?
Vim(echoerr):test
1