首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重复从菜单调用的命令

重复从菜单调用的命令
EN

Stack Overflow用户
提问于 2011-03-16 19:24:51
回答 2查看 340关注 0票数 4

我在VIM中创建了许多菜单命令。

.在正常模式下重复最后一个命令。

@:重复命令行中的最后一个命令

有没有办法重复从vim的菜单调用的最后一个命令?

更新:

示例菜单命令:

代码语言:javascript
复制
an 98.80.00 &MyMenu.Test\ :call <SID>Test("%")<CR>

如果我使用我自己创建的菜单命令,如何再次重复它(重复上次使用的菜单命令)?

在上述情况下,它将是:call <SID>Test("%")<CR>

我在命令行历史记录中找不到这些命令。

@::<UP>不工作

有人知道Vim在哪里保存函数调用/菜单命令操作吗?

Update2

Kent建议围绕上面的命令构建一个函数:

代码语言:javascript
复制
an 98.80.00 &MyMenu.Test\ :call SubExe('call <SID>Test("%")')<CR>

 function! SubExe(argument)
  let g:lastcommand = a:argument
  exe g:lastcommand
 endfun

它似乎有效,缺点是我必须更改当前的所有命令;)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-11 11:20:31

如果没有内置的支持,你必须自己构建一个,如果它对你如此重要的话。基本思想是:

创建一个像ExecMenuCmd(cmd)这样的函数--参数是命令,就像wq一样,在函数中,将命令保存到变量中,然后执行它。

然后,通过读取变量并执行,您可以创建映射到“重复”最后一个菜单cmd。

创建菜单项时,可以执行以下操作:

代码语言:javascript
复制
:menu File.SaveAndExit :call ExecMenuCmd('wq')

如果您愿意,您可以维护一个堆栈来存储菜单触发的命令,以实现更多功能。

票数 3
EN

Stack Overflow用户

发布于 2011-03-26 22:46:01

您可以在.vimrc中进行映射,以进入命令模式,然后运行最后一个命令。类似于:

代码语言:javascript
复制
noremap <F8> :<Up><Cr>

这将重复在正常模式下按F8时从命令模式运行的最后一件事情。您可以将F8更改为任何您想要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5330658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档