如何重新映射"q!" 和vim中的"q"

Dan*_*sor 1 vim

我想重新映射qq!.这是我正在尝试的:

cnoremap q :call TabCloseLeft('q')
cnoremap q! :call TabCloseLeft('q!')

这适当地重新映射:q但不捕获:q!.我已经阅读了各种帮助部分,但我显然忽略了一些东西.

Pet*_*ker 5

我看到一些问题:

  • 你使用cnoremap危险的例如/q
  • 您正在尝试覆盖vim的本机:quit功能
  • 看起来你正试图强迫vim进入标签行为

cnoremap

千万不能使用cnoremap尝试和创建命令,请使用:command.如果要覆盖命令,请使用聪明的cabbrev表达式或插件.请参阅vim change:x函数以删除缓冲区而不是保存并退出

本地戒烟

在vim中有很多方法可以退出缓冲区.有些人做的事略有不同.当vimmers学习更多命令时,他们会将它们集成到工作流程中.例如<c-w>c,关闭分割/窗口并ZZ更新当前缓冲区.如果沿着这条路走下去,你将会覆盖许多命令,否则你将无视有用的命令.

标签

学会有效地使用缓冲区.在Vim中使用选项卡很棒,但它们不是唯一的方法,肯定会让你痛苦不堪.恕我直言,最好是减少这些行为并鼓励更好的习惯.