我对Vimscript变量的工作方式感到困惑,例如,关于变量expandtab和noexpandtab,这似乎彼此相反。如果我问vim,
:set expandtab?
它回答
noexpandtab
。如果我问的话:echo &expandtab
它回答
0
。如果我问:set noexpandtab?
它再次回答
noexpandtab
。但是如果我问:echo &noexpandtab
它回答:
E113: Unknown option: noexpandtab
E15: Invalid expression: &noexpandtab
所以,我想我听不懂。如果
noexpandtab
是变量,那么为什么不能回显它的值?如果不是变量,那是什么? 最佳答案
noexpandtab
不是一个选项,它是no
,后跟一个实际的选项名称。该表示法允许您使用:set
命令关闭 bool(boolean) 选项。 &option
表示法用于将option
的值用作表达式。它只能与实际的选项名称(短或长)一起使用,因此不能与不是有效选项名称的noexpandtab
一起使用。" switch expandtab on
:set expandtab :let &expandtab = 1
" switch expandtab off
:set noexpandtab :let &expandtab = 0
" see what's the value of expandtab
:set expandtab? :echo &expandtab