如何通过检查拼写是否打开来创建用于切换拼写和语法的Vim函数?
目前,通过检查“拼写”选项是否已关闭,以下操作有效: 然而,下面检查拼写是否开启的代码似乎不起作用,这让我很困惑如何通过检查拼写是否打开来创建用于切换拼写和语法的Vim函数?,vim,Vim,目前,通过检查“拼写”选项是否已关闭,以下操作有效: 然而,下面检查拼写是否开启的代码似乎不起作用,这让我很困惑 function! ToggleSpell() if &spell ==# "spell" set nospell syntax on echom "spelling was on ... turning off" else syntax off set spell
function! ToggleSpell()
if &spell ==# "spell"
set nospell
syntax on
echom "spelling was on ... turning off"
else
syntax off
set spell
echom "spelling was off ... turning on"
endif
endfunction
当我这么做的时候:设置咒语?在Vim上,当咒语开启时,我会得到前面有两个空格的咒语,我怀疑这是问题的一部分;但是,即使我在检查相等时修改了上述内容以读取拼写,该函数也不起作用。您可以通过使用1或0测试未设置的相等来检查是否设置了选项:
if (&spell == 1)
您可以通过测试“未设置”的等于1或等于0来检查是否设置了选项:
if (&spell == 1)
要切换拼写检查,您可以使用内置!特征 例如,您可以使用一个命令打开和关闭拼写检查 设置咒语 然而,syntax on没有这个特性,但是您可以通过 if existsg:syntax|u on | syntax off | else | syntax enable | endif
查看详细信息切换拼写检查,您可以使用内置!特征 例如,您可以使用一个命令打开和关闭拼写检查 设置咒语 然而,syntax on没有这个特性,但是您可以通过 if existsg:syntax|u on | syntax off | else | syntax enable | endif 查看详细信息对于布尔选项spell/nospell,:set的输出不同于将该选项视为特殊变量&spell。后者的计算结果为0/1,表示Vim中的布尔值,因此不应将其与字符串进行比较:
if &spell
...
函数的第一个版本能够正常工作是一个意外。与数字比较时,拼写和nospell都转换为0,因此在函数的两个版本中,条件在逻辑上都等效于
if &spell ==# 0
对于布尔选项spell/nospell,:set的输出不同于将选项视为特殊变量&spell。后者的计算结果为0/1,表示Vim中的布尔值,因此不应将其与字符串进行比较:
if &spell
...
函数的第一个版本能够正常工作是一个意外。与数字比较时,拼写和nospell都转换为0,因此在函数的两个版本中,条件在逻辑上都等效于
if &spell ==# 0