vincenzogianfelice Asked: 2020-01-23 08:38:36 +0800 CST2020-01-23 08:38:36 +0800 CST 2020-01-23 08:38:36 +0800 CST 正常模式下 Ctrl-I 与 TAB 冲突 772 我最近注意到,在正常模式下,当我键入Ctrl-i(跳转命令)时, TAB键会“混淆” 。特别是,我有这个映射: nnoremap <Tab> :tabnext<Enter> linux vim 2 个回答 Voted Best Answer JdeBP 2020-01-23T09:37:35+08:002020-01-23T09:37:35+08:00 终端 I/O 应用程序只看到终端发送的组合字符,无法区分特定的键和弦,而 GUI 应用程序可以,因为 GUI 倾向于根据按键按下和释放消息进行操作。 ⇥ Tab大多数终端和大多数终端仿真器都会在按下或⎈ Control+时通过(虚拟)线路向主机系统发送一个 ␉ (U+0009) 字符I。这不是vim。这就是终端的工作方式,以及模拟它们的模拟器也是如何工作的。 ⎋ Esc同样,我观察到现在经常被遗忘,这些终端和终端仿真器在按下或⎈ Control+时通过(虚拟)线路向主机系统发送一个 ␛ (U+001B) 字符[。 Ingo Karkat 2020-03-05T04:04:53+08:002020-03-05T04:04:53+08:00 由于键盘输入在内部处理的方式,不幸的是,这在今天通常是不可能的。某些组合键,如Ctrl+ 非字母无法映射,Ctrl+ 字母与Ctrl+ Shift+ 字母无法区分。(除非您的终端为它发送一个不同的termcap代码,而大多数人不会。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/插入,则不能使用该组合键。这也适用于<Tab>/ <C-I>, <CR>/ <C-M>/ <Esc>/<C-[>等(唯一的例外是<BS>/ <C-H>。)这是一个已知的痛点,也是 vim_dev 和 #vim IRC 频道上各种讨论的主题。 有些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使是支持这个的终端中的控制台 Vim),并提出了各种建议,cp。https://groups.google.com/forum/#!topic/vim_dev/Ym6D-kWIsyo 但截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在未来的 Vim 版本中拥有这个。
终端 I/O 应用程序只看到终端发送的组合字符,无法区分特定的键和弦,而 GUI 应用程序可以,因为 GUI 倾向于根据按键按下和释放消息进行操作。
⇥ Tab大多数终端和大多数终端仿真器都会在按下或⎈ Control+时通过(虚拟)线路向主机系统发送一个 ␉ (U+0009) 字符I。这不是
vim
。这就是终端的工作方式,以及模拟它们的模拟器也是如何工作的。⎋ Esc同样,我观察到现在经常被遗忘,这些终端和终端仿真器在按下或⎈ Control+时通过(虚拟)线路向主机系统发送一个 ␛ (U+001B) 字符[。
由于键盘输入在内部处理的方式,不幸的是,这在今天通常是不可能的。某些组合键,如Ctrl+ 非字母无法映射,Ctrl+ 字母与Ctrl+ Shift+ 字母无法区分。(除非您的终端为它发送一个不同的termcap代码,而大多数人不会。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/插入,则不能使用该组合键。这也适用于
<Tab>
/<C-I>
,<CR>
/<C-M>
/<Esc>
/<C-[>
等(唯一的例外是<BS>
/<C-H>
。)这是一个已知的痛点,也是 vim_dev 和 #vim IRC 频道上各种讨论的主题。有些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使是支持这个的终端中的控制台 Vim),并提出了各种建议,cp。https://groups.google.com/forum/#!topic/vim_dev/Ym6D-kWIsyo
但截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在未来的 Vim 版本中拥有这个。