表明替代需要确认对话的最佳方式是什么?

时间:2013-09-07 08:17:21

标签: regex vim input substitution confirmation

我经常从菜单中调用函数

许多人有双重参赛作品:
- 一个正常替换
- 一个用确认对话框替换(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。

1 个答案:

答案 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”,您只需要输入替换部分并点击您喜欢的按钮。