2011-08-31 257 views
0

enter image description here我正在做一个vim插件供个人使用,并从工具栏触发。 当我点击GVIM工具栏中的插件时,它会创建一个名为'common'的子菜单。 当我点击common时,它会开始检查我的vim设置并创建子菜单,例如显示/隐藏行号。但下面的代码有一些问题,并且无法工作。它出什么问题了?如何动态更改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 

---------------------已解决--------------------- -
以上代码无法使用。它完成了错误。
请参阅Luc Hermitte的回答。

回答

1

您需要:unmenu旧条目才能将其删除。

顺便说一句,我已经有一个功能齐全的切换/循环引擎的值,比也更新菜单。它的功能从lh-vim-lib完成,请参阅test file以使用示例,并使用documentation以获取更多解释。

1

:amenumap这样的命令:最后必须包含<CR>

:amenu &Plugin.&Common.Hide\ Line\ &Number :set nonu<CR> 

此外,<SID>s:是不一样的。

您还应该大概范围isNum你的脚本s:

额外的一句话:你为什么不有提出来切换行号,并呼吁:set nu!一个菜单项?

+0

非常感谢。这是非常好的答案。我在vim脚本上很新,所以我仍然在学习;-)热衷于了解任何好的建议。 – CCC

+0

@heean:一个好的建议是总是从vim builtin的帮助中学习,这很好。你也可以阅读StackOverflow的vim标签FAQ – Benoit

+0

是的,这是我阅读帮助后的练习。我添加了图像,即我想为自己构建的图像。其实我想知道实现该脚本的好功能(好建议);-) – CCC