强制GVim在关闭前提示

jfo*_*cht 6 vim

我最近一直在向GVim过渡,因为我发现它更美观,比终端中的vim快一点.我有这个非常坏的习惯,我正试图打破.当我从命令行使用vim时,我的工作流程是这样的:

vim filename.txt
# make some edits
ZZ
# do other stuff
vim otherfile.txt
# make some edits
ZZ
Run Code Online (Sandbox Code Playgroud)

现在使用GVim,我最终太频繁地关闭了编辑器.我想知道是否有办法迫使GVim提示我或打开一个空的缓冲区,当我做一个:wqZZ.有任何想法吗?

编辑:我知道如何重新映射密钥,但我想知道是否有办法迫使GVim有一个不同的行为然后从命令行调用vim.

syb*_*kar 6

将以下内容放在vimrc中可以完全禁用ZZ快捷方式:

nnoremap ZZ   <Nop>
Run Code Online (Sandbox Code Playgroud)

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

if has("gui_running")
    nnoremap ZZ :q
    nnoremap :wq :q
endif
Run Code Online (Sandbox Code Playgroud)


Con*_*ner 6

调用一个函数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
Run Code Online (Sandbox Code Playgroud)