我对如何在set
中使用空格感到困惑。例如,假设我要更改我的字体。我有很多选择:
set guifont=a\ b
这从:help option-backslash
开始有意义。
set guifont="a b"
我找不到任何相关的文档,但引用允许你处理空格是有道理的。当您删除引号以获取set guifont=a b
时,它不起作用(未知选项b
)。到目前为止一切都很好。
set guifont='a b'
这是我困惑的地方。为什么这不起作用? echo 'a b'
和echo "a b"
生成相同的输出..
set guifont='a\ b'
在这里,我的思绪被吹嘘,因为这会将guifont设置为a b
,但如果我echo 'a\ b'
我得到a\ b
,根据:help expr-quote
这是有道理的。
简而言之:引号如何与set
互动?
答案 0 :(得分:1)
在vim "
开始发表评论。这意味着set guifont="a b"
被解释为set guifont=
。 (如果您执行set guifont?
,则可以看到此信息,因为返回的值不是a b
)
来自:h option-backspace
的文档显示情况属实,因为您需要转义引号以将其包含在set命令中。
Similarly, the double quote character starts a comment. To include the '"' in
the option value, use '\"' instead. This example sets the 'titlestring'
option to 'hi "there"': >
:set titlestring=hi\ \"there\"
对于set guifont='a b'
,单引号不是特殊字符,因此它们不具有任何意义。在这里,您将两个单独的参数传递给set命令。第一个是guifont='a
,另一个是b'
但是b'
没有意义,你得到E518: Unknown option: b'
基本上,set命令只接受以空格分隔的参数。 vim注释被正常处理并从命令中删除。引用不允许您在set命令中处理空格。
Vimscript是一种随着时间的推移而演变的语言,规则并不一致。
答案 1 :(得分:0)
您可以使用:set
转义空格:
:set option=foo\ bar
或使用:let
的引号:
:let &option = "foo bar"