强制GVim在关闭前提示

7

最近我一直在转向使用GVim,因为我觉得它比终端中的vim更美观,速度也稍微快一些。但是我有一个非常糟糕的习惯需要改掉。在命令行中使用vim时,我的工作流程如下:

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

现在我使用GVim编辑器时,经常不小心关闭编辑器。我想知道是否有办法强制只让GVim在执行:wqZZ命令时提示我或打开一个空缓冲区。有什么想法吗?
编辑:我知道如何重新映射键,但我想知道是否有一种方法可以强制GVim具有与从命令行调用vim时不同的行为。
4个回答

7

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

6

将以下内容放入您的vimrc中,可以完全禁用ZZ快捷键:

nnoremap ZZ   <Nop>

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

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

我可以做到,但我仍然喜欢在命令行中调用vim进行快速编辑和保存的能力。 - jfocht
如果是这种情况,只需用 if has("gui_running")...endif 包围它即可。 - sybkar

2

在你的 .vimrc 文件中添加以下内容:

set confirm

0

Gvim和vim在退出时处理略有不同。选项1在两者中的表现都符合预期。选项2在vim中表现良好,但在gvim中你可以通过在X Windows中按“X”来解决部分问题。它仍然会确认文件是否未编辑,但当一切都保存时,它将只是退出所有内容。也许有人知道如何处理这个问题。

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

在你的.vimrc文件中添加以下内容:

set confirm

选项2:每次退出时都确认(当您执行ZZ或q时)

使用此插件

 Plugin 'vim-scripts/confirm-quit'

或者手动编写它,跟随这个链接看看你需要做什么(顺便说一句——这个插件诞生于这个SE问题)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接