4

[已解决] 似乎解决方案是这样的:

if exists('g:nameOfMyOption') && g:nameOfMyOption
     ...
endif

这很简单,但我在网上找不到答案。我想在插件文件中做这样的事情:

" MyChecker.vim
"
" Uncomment the following line to set the autochecker option
"set autochecker=1

if ISSET(autochecker)
   autocmd InsertChange * :call MyAutoCheckerFunction()
endif

我如何做 ISSET 线?我宁愿不必显式设置 autochecker=0,我希望它只检查 autochecker 是否存在。

编辑:当我尝试以下操作时:

if &autochecker == 1
    ...
endif

我收到此错误消息:

Error detected while processing MyChecker.vim:
line   32:
E113: Unknown option: autochecker
E15: Invalid expression: &autochecker == 1
4

2 回答 2

6

您不能在 vim 中创建自定义选项。您需要创建一个全局变量,例如:

let g:AutoChecker = 1

....

if g:AutoChecker == 1
   " ...
endif
于 2012-04-04T17:34:30.403 回答
1

对于一般选项,我使用以下函数:lh#option#get()。它首先搜索是否b:{varname}存在以返回其值,然后g:{varname}. 否则,如果不存在任何变量,则返回提供的默认值。

对于编程相关选项(即可以针对特定文件类型覆盖选项),我使用另一个函数:lh#dev#option#get()

lh-cpp文档的C++ 选项部分间接解释了这两个函数背后的基本原理。

于 2012-04-05T11:30:50.027 回答