是否有一种方法可以将vim中的:q重新绑定为更复杂的命令,以防止意外退出vim?
:close
命令,它类似于:q
,但不会关闭最后一个窗口:
http://vimdoc.sourceforge.net/htmldoc/windows.html#:close
你可以设置别名让q
命令映射到close
:cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'close' : 'q')<CR>
感谢 @Paradoxial 提供的 :cabbrev 技巧。
:wq
关闭了vimrc。哎呀。 - mattalxndr:q
时关闭未保存的缓冲区。 我发现了这个问题,因为我有一个20年的习惯,在工作时自动按下:w
。 在度过了一个充满毒品和放荡女人的夜晚后,我失去了左手小指,现在经常按下q
而不是w
。这是个悲惨的角落情况...但很有趣。 - venzen我知道,我知道,这是一个非常老的问题,但今天我也有同样的问题,我首先找到了这篇文章。我编写了一个简短的脚本放在 .vimrc 中。
function! ConfirmQuit(writeFile)
if (a:writeFile)
if (expand('%:t')=="")
echo "Can't save a file with no name."
return
endif
:write
endif
if (winnr('$')==1 && tabpagenr('$')==1)
if (confirm("Do you really want to quit?", "&Yes\n&No", 2)==1)
:quit
endif
else
:quit
endif
endfu
cnoremap <silent> q<CR> :call ConfirmQuit(0)<CR>
cnoremap <silent> x<CR> :call ConfirmQuit(1)<CR>
!
命令修饰符的情况下),当你还有未保存的更改时,所以你可能会失去的只是GVIM的窗口位置、大小和任务栏位置。:q
,可以使用cmdalias插件,就像这样::Alias q if\ winnr('$')>1||tabpagenr('$')>1||confirm('Really\ quit?',\ "&OK\\n&Cancel")==1|quit|endif
这个命令检查最后一个窗口(:q
不一定会退出 Vim),并插入确认提示。
q
和 !
非常接近。 - Qix - MONICA WAS MISTREATED!
;无论是:q1
还是:Q!
都不会有任何影响。如果你经常打错键,那么在Vim中也不会有太多乐趣。 - Ingo Karkatq!
,哈哈。 - Qix - MONICA WAS MISTREATED:q
命令::cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'echo' : 'q')<CR>
在命令模式下,这将把q
缩写成echo
,但不允许在q
不在第一列时触发缩写。这样,edit q
不会被缩写成edit echo
。
ConfirmQuit.vim:当您尝试退出vim时提供确认对话框。
http://www.vim.org/scripts/script.php?script_id=1072
我通过使用此插件进行了修改。
autocmd bufenter c:/intranet/notes.txt cnoremap <silent> wq<cr> call ConfirmQuit(1)<cr>
我只想将这个应用于特定的文件
使用coot/cmdalias_vim插件,我有效地禁用了短暂、冲动的退出命令:q
、:q!
和:wq
。希望这能减缓我的速度,并让我考虑是否真的想使用:quit
或者:bdelete
。以下是我.vimrc
文件中“autocmd部分”的精简版本:
if has("autocmd")
augroup VIMRC_aliases
au!
au VimEnter * CmdAlias wqu\%[it] write|quit
au VimEnter * CmdAlias q echo\ "Use\ :qu[it]\ instead\ of\ :q"
au VimEnter * CmdAlias q! echo\ "Use\ :qu[it]!\ instead\ of\ :q!"
au VimEnter * CmdAlias wq echo\ "Use\ :wqu[it]\ instead\ of\ :wq"
augroup END
endif
:w
保存文件时,会多按一个q
键,结果就变成了:wq
。这是因为多年来,我一直将 vim 作为命令行配置文件编辑器而非完整的编辑器来使用。 - andho