......或者在任何模式下。
我只是希望阻止某些扩展在这种情况下加载,例如:
if ! currentmode('restricted')
Bundle('some-extension')
endif
答案 0 :(得分:5)
你是对的;像v:vimmode
这样的特殊变量会有所帮助,但我认为目前不存在这样的事情。为什么不在vim_dev mailing list上提出这个问题?!
与此同时,您必须通过调用在受限模式下禁止的内容来检测模式。我最好的想法是成功率最低的是使用空文件名调用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:')
答案 1 :(得分:2)
我不确定这是不是一个好主意:
restricted-mode
禁用外部命令(也包括一些相关功能)。如果我们在rvim中调用外部命令或某些函数,我们会得到错误E145
。
所以也许你可以通过system()
调用一些伪外部命令,然后捕获异常E145
。区分它是否处于限制模式。 e.g。
try
call system("echo x") "or even call system("")
catch /E145/
"your codes
endtry
希望有所帮助