vim 如何用 `set` 解析引号?
How does vim parse quotes with `set`?
我对如何在 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
交互?
您可以使用 :set
:
转义空格
:set option=foo\ bar
或在 :let
中使用引号:
:let &option = "foo bar"
要了解更多信息,您可以输入:
:h let-&
在 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 是一种随着时间的推移而发展的语言,其规则并不一致。
我对如何在 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
交互?
您可以使用 :set
:
:set option=foo\ bar
或在 :let
中使用引号:
:let &option = "foo bar"
要了解更多信息,您可以输入:
:h let-&
在 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 是一种随着时间的推移而发展的语言,其规则并不一致。