Vimscript:函数定义中“中止”的意义是什么?

时间:2012-11-16 22:55:08

标签: vim

在vimscript中,function定义可以采用abort参数。引用文档,

When the [abort] argument is added, the function will
abort as soon as an error is detected

这使我严重质疑在遇到错误时通常会做什么功能。盲目地绊倒在黑暗中?

abort实际上做了什么?它是否会破坏所有try...endtry块?你想什么时候使用它,什么时候想避免使用它?

1 个答案:

答案 0 :(得分:13)

正如所提到的那样,所有复杂的细节都记录在:help except-compat,答案基本上归结为向后兼容性和Vimscript固有的灵活性。

从录制的宏到映射到自定义函数有一个自然的进展。考虑到这一点,当函数中的命令导致错误(例如,%s/foo/bar/不匹配且缺少e标志)时,可能会继续处理。

另一方面,当您编写“工业级”映射时,无论如何,您几乎总是在函数调用层次结构中使用try..catch块(以避免任何多行错误Error detected while processing function: ... ,而是向用户显示一条很好的错误信息。)

所以在实践中,大多数已发布的插件不使用abort,而是使用try..catch,而对于快速的,袖手旁观的内容,您通常不会过多关注错误处理,无论如何