如何在 vim 脚本中检查 &somesettingname 返回真值或布尔值?

Mar*_*w.W 2 vim

我了解如何检查 vimrc 中是否存在设置Vimscript: 使用 vim 设置作为变量 / 如何检查是否设置了特定的 guioption

但我也有一个问题:如果我tabstop=1在 vimrc 中设置类似的内容,那么&tabstop将返回 1。如果我set number在 vimrc 中设置,&number也会返回 1。那么,我怎么知道它返回的是数字值还是 vim 脚本中的布尔值?

这就是我问这个问题的原因:我正在编写一个 vim 脚本,将 modeline 添加到基于 vimrc 的文件中modeline="modeoption=&modeoptions"。我让 ,当我将 Expandtab 放入 modeoptions 时,我得到了类似的东西/*vim:expandtab=1:shiftwidth=4:tabstop=4:smarttab=1:*/

Ing*_*kat 5

您的观察是正确的:布尔值 ( number/ nonumber) 和整数选项(例如tabstop)都会使用该语法生成​​一个数字&optionname。Vimscript 没有专用的布尔类型;true/false用not 0/0来表示。

因此,您必须在插件中对选项类型进行硬编码,以便将正确的格式插入模型行中。您可以从 检索所有选项:help options.txt