我是一个 Vim 新手。
当我使用 :wq
命令时,我希望它只保存并关闭当前缓冲区,而不是保存并退出 Vim。
同样地,我希望 :q
命令的效果与 :bd
相同。
有什么建议可以实现这种行为吗?
Vim允许用户在所有模式下添加命令的键映射,包括命令行模式,因此您可以在.vimrc
文件中定义以下映射:
:cnoreabbrev wq w<bar>bd
:cnoreabbrev q bd
这些命令指示Vim将在命令行中按下WQ键时扩展为w|bd
,同时将Q扩展为bd
。有关更多详细信息,请参阅:help key-mapping
。
请查看Sayonara插件。
我尝试了其他答案,但它缺少一个使用情况。当我关闭最后一个缓冲区时,我希望它像普通的:q
命令一样关闭Vim。 :bd
只会留下一个空白窗口和没有缓冲区。
这是从其他答案改编的映射:
" Prevent accidental closing of all buffers when doing :wq or :q
cnoreabbrev wq w<bar>Sayonara
cnoreabbrev q Sayonara
cnoremap
来实现此功能!这将在任何命令中扩展q
。例如,:set cscopequickfix
会被扩展为:set cscopebduickfix
。请改用:cnoreabbrev
!参见相关帮助文档。 - Benoitcnoreabbrev
更好,因为如果您想将文件保存为“以wq结尾的任何名称”,除非文件名确切地是“wq”,否则缩写不会触发。 - Benoit:cnoreabbrev bx up<bar>bd
来模拟缓冲区的:x
命令,这将仅在缓冲区已更改时写入缓冲区并关闭缓冲区。 - naught101wq
映射的问题在于它实际上并没有退出,但这实际上是与问题概念有关的问题。 - D. Ben Knoble