5

...或任何方式。

在这种情况下,我只想阻止加载某些扩展,例如:

if ! currentmode('restricted')
     Bundle('some-extension')
endif
4

2 回答 2

5

你是对的; 像这样的特殊变量v:vimmode会有所帮助,但我认为目前不存在这样的事情。为什么不在vim_dev 邮件列表中提出这个问题?!

同时,您必须通过调用限制模式中禁止的内容的结果来检测模式。我对成功影响最小的最佳想法是writefile()使用空文件名调用:

silent! call writefile([], '')
" In restricted mode, this fails with E145: Shell commands not allowed in rvim
" In non-restricted mode, this fails with E482: Can't create file <empty>
let isRestricted = (v:errmsg =~# '^E145:')
于 2013-05-22T11:34:35.477 回答
2

我不确定这是否是个好主意:

restricted-mode禁用外部命令(还有一些相关功能)。如果我们在 rvim 中调用外部命令或某些函数,我们会得到 Error E145

所以也许你可以通过调用一些虚拟system()的外部命令,然后捕获异常E145。来区分它是否处于受限模式。例如

try
    call system("echo x") "or even call system("")
catch /E145/
"your codes
endtry

希望能帮助到你

于 2013-05-22T11:35:40.940 回答