0

我经常从我的菜单中调用函数

许多有双重条目:
- 一个用于正常替换
- 一个用于带有确认对话框 (gc) 的 替换

体育:

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>

没有比我上面用来指示确认对话框更好的方法了吗?(并避免所有这些重复输入)

Pe 当一个函数调用一个输入对话框时,我想添加一个复选框,我可以在其中指示(选中它)在每次替换后添加一个对话框确认,但不幸的是它们不存在并且没有办法(如在 autohotkey ) 自己创建一个输入对话框 GUI。

4

1 回答 1

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

于 2013-09-07T12:22:15.767 回答