Vim 维姆:我怎么看一个命令是否被打开?

Vim 维姆:我怎么看一个命令是否被打开?,vim,Vim,我想实现一个函数,通过设置行号循环 我无法评估数字命令的状态。例如,我尝试过: function! CycleNumbers() if exists(":number") set nonumber elseif exists(":nonumber") set number endif endfunction 有没有办法测试数字是否关闭?比如数字==关 感谢您的帮助您可以使用感叹号切换选项(在命令行上): 另请参见:帮助集- 如果你坚持要有

我想实现一个函数,通过设置行号循环

我无法评估数字命令的状态。例如,我尝试过:

function! CycleNumbers()
    if exists(":number")
        set nonumber
    elseif exists(":nonumber")
        set number
    endif
endfunction
有没有办法测试数字是否关闭?比如数字==关


感谢您的帮助

您可以使用感叹号切换选项(在命令行上):

另请参见
:帮助集-

如果你坚持要有一个函数,那么你想要的是

fu! CycleNumbers()

    set number!

endfu
编辑

如果要查询选项的当前值,请使用
&option
语法:

if &number == 0
   ... 
else
   ...
endif

为什么不检查选项值?比如:

let &number = &number? 0: 1
或者就像你在评论中说的那样,
setnu

要获取信息,如果显示行号,请读取变量。如果是
1
,则当前显示的号码<代码>0
,而不是

比如:

if &number
   "showing
else
   "not showing
endif

在此处填写逻辑代码。

为什么需要检查
:number
命令来设置行号?它们是不同的东西。是否要切换行号选项?我要切换行号是否显示。我知道我只能说一个数字。但我希望周期更复杂,因此我需要能够检查行号显示的状态。我希望这有道理。当心!在Vim的最新版本中,可以设置相对编号和绝对编号,在光标处显示绝对线,在其他地方显示相对编号。因此,你有4个条件来检查一个完整的周期。这正是我想要的,非常感谢!谢谢,这更多的是查询而不是切换。我想从无行号->行号->相对行号切换
if &number
   "showing
else
   "not showing
endif