【问题标题】:Force GVim to prompt before close强制 GVim 在关闭前提示
【发布时间】:2012-07-26 14:52:27
【问题描述】:

我最近一直在过渡到 GVim,因为我发现它比终端中的 vim 更美观且速度更快。我有一个非常糟糕的习惯,我正在努力改掉。当我从命令行使用 vim 时,我的工作流程是这样的:

vim filename.txt
# make some edits
ZZ
# do other stuff
vim otherfile.txt
# make some edits
ZZ

现在使用 GVim,我最终过于频繁地关闭编辑器。我想知道当我执行:wqZZ 时,是否有办法强制GVim 提示我或打开一个空缓冲区。有什么想法吗?

编辑:我知道如何重新映射键,但我想知道是否有办法强制 GVim 具有与从命令行调用 vim 时不同的行为。

【问题讨论】:

    标签: vim


    【解决方案1】:

    ZZ上调用函数,如果只剩下一个标签和窗口,提示是否关闭(默认为关闭)。见:help confirm()

    nnoremap ZZ :call QuitPrompt()<cr>
    
    fun! QuitPrompt()
       if has("gui_running") && tabpagenr("$") == 1 && winnr("$") == 1
          let choice = confirm("Close?", "&yes\n&no", 1)
          if choice == 1 | wq | endif
       else | wq | endif
    endfun
    

    【讨论】:

      【解决方案2】:

      在你的 vimrc 中加入以下内容可以完全禁用 ZZ 快捷方式:

      nnoremap ZZ   <Nop>
      

      或者您可以将它们重新映射到 :q 的标准行为:

      if has("gui_running")
          nnoremap ZZ :q
          nnoremap :wq :q
      endif
      

      【讨论】:

      • 我可以做到,但我仍然喜欢在命令行中调出 vim、快速编辑和 ZZ 的能力。
      • 如果是这样,就用if has("gui_running")...endif包围它
      【解决方案3】:

      在你的 .vimrc 中添加这个:

      set confirm
      

      【讨论】:

        【解决方案4】:

        Gvim 和 vim 句柄退出略有不同。选项 1 在两者中都可以正常工作。选项 2 在 vi​​m 中效果很好,但在 gvim 中,您可以通过按“X”在 X Windows 中关闭(部分)绕过它。它仍然会确认文件是否未经编辑,但在保存所有内容后它将退出所有内容。也许其他人知道如何处理这个问题。

        选项 1:仅在文件未保存时确认退出

        在你的 .vimrc 中添加这个:

        set confirm
        

        选项 2:始终确认退出(当您执行 ZZ 或 q 时)

        使用这个插件

         Plugin 'vim-scripts/confirm-quit'
        

        或者手动编码,following along with this to see what you need to do(顺便说一句——这个插件诞生于this SE Question

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-02-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多