在Vimscript中尝试捕获

Nic*_*lev 9 vim exception-handling

我试图在Vim中捕获错误(E490),如下所示:

:try | foldopen! | catch | | endtry
Run Code Online (Sandbox Code Playgroud)

仍然,在执行此操作时,Vim显示错误:

Error detected while processing :
E490: No fold found
Run Code Online (Sandbox Code Playgroud)

如果有任何折叠,我想打开所有折叠.

有任何想法吗?

ZyX*_*ZyX 5

看起来像一个错误:您的版本显示错误,

:execute 'try | foldopen! | catch | | endtry'
Run Code Online (Sandbox Code Playgroud)

表现得像

:echo 'try | foldopen! | catch | | endtry'
Run Code Online (Sandbox Code Playgroud)

没有折叠.

请尝试以下解决方法:

:execute "try\n    foldopen!\ncatch\nendtry'
Run Code Online (Sandbox Code Playgroud)

顺便说一句,如果你想忽略所有错误,有一种更好的方法:

:silent! foldopen!
Run Code Online (Sandbox Code Playgroud)

请注意,如果存在消息,它将不会从重定向中清除消息try...catch.