我经常从菜单中调用函数
许多人有双重参赛作品:
- 一个正常替换
- 一个用确认对话框替换(gc)
p.e。:
vnoreme 20.900 &Edit.Delete\ All\ but\ 1st\ Doubles\ :<C-U>call <SID>DeleteD("'<,'>","confirm-no")<CR>
vnoreme 20.901 &Edit.Delete\ All\ but\ 1st\ Doubles\ (gc)\ :<C-U>call <SID>DeleteD("'<,'>","confirm-yes")<CR>
有没有比上面用的更好的方法来表示确认对话框? (并避免所有这些双重条目)
体育专业。当一个函数调用一个inputdialog框时,我想添加一个复选框,我可以指示(检查它)在每次替换后添加一个对话框确认,但不幸的是它们不存在而且没有办法(如在autohotkey中)自己创建一个inputdialog GUI。
答案 0 :(得分:2)
好吧,您可以更改您的Delete()函数,询问您是否希望确认每个替换。像这样:
fu! Delete(range)
let confirm = confirm("confirm each change?", "&yes\n&no", 1)
let cmd=printf("%ss/foobar/foobaz/g%s", a:range, confirm ? 'c' : '')
exe cmd
endfu
(这只是一个例子,你可能想要改变至少搜索和替换标准)
或者,如果您使用简单替换,请学习使用:ex命令:promptrepl
,
例如:promptrepl foobar
将打开一个搜索/替换对话框,其中搜索字段将设置为“foobar”,您只需要输入替换部分并点击您喜欢的按钮。