如何在VIM'中动态更改菜单标题;什么是工具栏?

如何在VIM'中动态更改菜单标题;什么是工具栏?,vim,menu,Vim,Menu,我正在做一个个人使用的vim插件,它会从工具栏触发。 当我单击GVIM工具栏中的插件时,它会创建一个名为“common”的子菜单。 当我单击common时,它开始检查我的vim设置和创建子菜单,例如,显示/隐藏行号。但是下面的代码有一些问题,无法工作。怎么了 amenu &Plugin.&Common :call <SID>createSubMenu()<CR> fun! s:createSubMenu() let isNum = &n

我正在做一个个人使用的vim插件,它会从工具栏触发。 当我单击GVIM工具栏中的插件时,它会创建一个名为“common”的子菜单。 当我单击common时,它开始检查我的vim设置和创建子菜单,例如,显示/隐藏行号。但是下面的代码有一些问题,无法工作。怎么了

amenu &Plugin.&Common :call <SID>createSubMenu()<CR>
fun! s:createSubMenu()    
  let isNum = &number
  if isNum == '1'     
    amenu &Plugin.&Common.Hide\ Line\ &Number  :set nonu  
  else     
    amenu &Plugin.&Common.Show\ Line\ &Number  :set nu  
  endif    
endfunction
amenu&Plugin&Common:callcreatesubmenu()
有趣!创建子菜单()
让isNum=&number
如果isNum=='1'
amenu&Plugin&Common.Hide\&Number:设置为非u
其他的
amenu&Plugin&Common.Show\Line\&Number:set nu
恩迪夫
端功能
---------------------已解决-----------------
无法使用上述代码。填写错误。

请参考Luc Hermitte的答案。

:amenu
的工作原理类似于
map
命令:必须在末尾包含

:amenu &Plugin.&Common.Hide\ Line\ &Number :set nonu<CR>
:amenu&Plugin&Common.Hide\&Number:设置为非u
另外,
s:
也不一样

您可能还应该使用
s:


另外一句话:为什么没有一个单独的菜单项来建议切换行号和调用
:set nu

您需要
:取消菜单
旧条目以将其删除


顺便说一句,我已经有了一个功能齐全的值切换/循环引擎,还更新了菜单。这是通过中的函数完成的,请参见以获得使用示例,并通过获取更多说明。

非常感谢。这是非常好的答案。我对vim脚本非常陌生,所以我还在学习;-)渴望知道任何好的建议。@heean:一个好的建议是总是向vim内置帮助学习,这是做得很好的。您还可以阅读StackOverflowyes上的vim标签常见问题解答,这是我在阅读帮助后的练习。我加上这个形象,这就是我想为自己打造的。实际上,我想知道实现脚本的好功能(好建议);-)比如,实现相同功能的代码更少。就这样