如何捕获'确认saveas'用户输入?

时间:2014-06-30 12:19:51

标签: vim buffer overwrite savefiledialog

我使用此命令重命名当前文件并删除旧名称的文件:
:exe "confirm sav ".variable

Variable在un inputdialog()中给出。

如何捕获confirm saveas用户输入(覆盖是或否)以执行此操作:
如果userinput ==' no' - >什么都不做 如果用户输入=='是' - >删除旧文件和缓冲区:call delete(expand('#')) | bd#

希望我能说清楚。

2 个答案:

答案 0 :(得分:1)

您无法直接访问:confirm的结果,但可以观察到:saveas的效果:如果缓冲区不再是'modified',则保存已完成。要处理未修改的原始缓冲区,必须保存并恢复原始状态。

let save_modified = &l:modified
setlocal modified
exe "confirm sav ".variable
if !&l:modified
    " User confirmed.
    call delete(expand('#')) | bd#
else
    " User canceled; restore original state.
    let &l:modified = save_modified
endif

注意:有一个重命名插件:rename plugin

答案 1 :(得分:0)

confirm()功能正是您所需要的。

:h confirm()检查详细的参数描述和示例。