问题
I've been making a transition to GVim lately, because I find it to be more aesthetically pleasing and a little bit faster then vim in the terminal. I have this really bad habit that I'm trying to break. When I used vim from the command line my work flow was like this:
vim filename.txt
# make some edits
ZZ
# do other stuff
vim otherfile.txt
# make some edits
ZZ
Now using GVim, I end up closing the editor far too frequently. I'm wondering if there is a way to force just GVim to either prompt me or open an empty buffer when I do a :wq or ZZ. Any ideas?
EDIT: I know how to remap keys, but I'm wondering if there is a way to force GVim to have a different behavior then when vim is called from the command line.
回答1:
Call a function on ZZ and if there is only one tab and window left, prompt whether to close or not (default is to close). See :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:
Putting the following in your vimrc could be used to completely disable the ZZ shortcut altogether:
nnoremap ZZ <Nop>
Or you could remap them to the standard behaviour of :q :
if has("gui_running")
nnoremap ZZ :q
nnoremap :wq :q
endif
回答3:
Add this in your .vimrc:
set confirm
来源:https://stackoverflow.com/questions/11672028/force-gvim-to-prompt-before-close