【问题标题】:Why doesn't "map! <C-q> :q <CR> " work in vim?为什么 "map! <C-q> :q <CR> " 在 vi​​m 中不起作用?
【发布时间】:2023-03-15 19:03:01
【问题描述】:

我在命令行模式下输入:map! &lt;C-q&gt; :q &lt;CR&gt;,然后回到普通模式,按ctrl-q,vim没有退出。为什么?

【问题讨论】:

标签: vim


【解决方案1】:

正如 Johnsyweb 建议的那样,Ctrl-Q 一开始并没有到达 Vim。这也适用于流行的 Ctrl-S。两者都可以通过添加来修复

silent !stty -ixon > /dev/null 2>/dev/null

发送到您的.vimrc,因为它会强制这些控制序列到达应用程序。

【讨论】:

  • 我测试过了。它适用于我的机器。您使用的是什么外壳和什么终端仿真器(如果有)?
  • @river - 尝试将 stty -ixon 放入您的 .bashrc 中。启动一个新终端,然后启动 vim。
  • @Ixs 使用连接到 putty-256color 终端的 putty 测试了 stty -ixon 并且工作正常 - 谢谢
【解决方案2】:

为什么有人想在plethora already available 中添加另一种退出 Vim 的方法,这超出了我的理解。不过……

在 Fedora 15 上,Ctrl-Q 可能被您的终端捕获为 XON (resume),因此无法到达 Vim 以退出应用程序。

您可以检查映射中是否存在错误或冲突,如下所示:

:verbose map! <C-Q>

:map! 用于指定insertcommand-line 模式下的映射。

normal-mode mappings(通常)是这样指定的:

:nmap <C-Q> :q<CR>

【讨论】:

  • 我使用的是 Fedora 15。但是 :map! :q 也不起作用,我尝试了许多其他组合键。
  • @Downvoter:你能指出这个答案有什么问题或遗漏吗?
  • :nmap 也可以在原版vim 中使用。由于我概述的原因,控制字符没有以终端模式进入应用程序。 bitmask's answer 详细说明如何解决此问题。
  • Ctrl+q 可以单手完成(按下 2 个键)。 :q enter 需要两只手(按下 4 个键( shift+; q enter ))。有人可能会得出结论,ctrl+q 的输入时间大约是 :q 输入的一半,这使得它更有效。
  • 感谢@Johnysweb 的链接
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 2021-01-29
  • 1970-01-01
  • 2021-09-06
相关资源
最近更新 更多