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

So8*_*res 15 vim

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

When the [abort] argument is added, the function will
abort as soon as an error is detected
Run Code Online (Sandbox Code Playgroud)

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

什么是abort真正做到?它会破坏所有try...endtry块吗?您何时想使用它,何时想避免使用它?

Ing*_*kat 16

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

从记录的宏到映射到自定义函数有一个自然的进展.考虑到这一点,可能有意义的是,当函数中的命令导致错误(例如%s/foo/bar/,不匹配并丢失e标志)时,处理应该继续.

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

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