我在VIM中创建了许多菜单命令。
.
在正常模式下重复最后一个命令
@:
重复命令行
有没有办法重复从vim的菜单调用的最后一个命令?
更新
示例菜单命令:
an 98.80.00 &MyMenu.Test\ :call <SID>Test("%")<CR>
如果我使用自己创建的菜单命令,我该如何重复它(重复上次使用的菜单命令)?
在上述情况下,它将是:call <SID>Test("%")<CR>
我在命令行历史记录中找不到这些命令
@:
和:<UP>
不起作用
有人知道Vim保存函数调用/菜单命令操作的位置吗?
UPDATE2
Kent建议围绕上述命令构建一个函数:
an 98.80.00 &MyMenu.Test\ :call SubExe('call <SID>Test("%")')<CR>
function! SubExe(argument)
let g:lastcommand = a:argument
exe g:lastcommand
endfun
它似乎有效,缺点是我必须更改所有当前命令;)
答案 0 :(得分:3)
如果没有内置支持,您必须自己构建一个支持,如果它对您来说非常重要的话。基本理念是:
您可以在函数中创建一个函数,如ExecMenuCmd(cmd)
参数是命令,如wq
,将命令保存到变量中,然后执行它。
然后你可以创建映射到&#34;重复&#34;最后一个菜单cmd通过读取变量并执行。
创建菜单项时,您可以执行以下操作:
:menu File.SaveAndExit :call ExecMenuCmd('wq')
如果您愿意,可以维护一个堆栈来存储菜单触发的命令,以实现更多功能。
答案 1 :(得分:0)
您可以在.vimrc中进行映射以进入命令模式,然后运行最后一个命令。类似的东西:
noremap <F8> :<Up><Cr>
只要在正常模式下按F8,这将重复从命令模式运行的最后一件事。您可以将F8更改为您想要的任何内容。