Vim中的插入符号和控制字符

时间:2017-11-04 06:33:20

标签: vim terminal

在Vim(或终端?)中,无法区分控制字符及其插入符号,例如EnterC-M。但是,只有例外; BSC-H 为什么他们只有特权?

例如,如果您将Enter映射到NOP,则还会映射C-M。其他许多控制字符具有相同的行为。另一方面,BSC-H可以分别映射到不同的密钥。

:map <Enter> <NOP> // also <C-M> will be mapped
:map <BS> <NOP>    // only <BS> will be mapped, <C-H> won't

2 个答案:

答案 0 :(得分:2)

您可以在退格前按 control V 将退格插入文件。在这种情况下,vim(和大多数编辑者)会将其显示为 ^H 。但通常将退格视为一个命令(告诉vim做某事,具体取决于模式)。

当在包含控制字符的文件中移动光标时,您可以轻松区分控制字符与另一个字符旁边的插入符:当您向左/向右移动光标时,vim将移动两个列对于控制字符,但每个插入符号和其他字符的一个列。

答案 1 :(得分:0)

我不知道所有细节,但基本上(据我所知),Vim使用API​​来获取无法区分这些不同键的按键。对于像GVIM这样的图形应用程序,可以毫无问题地区分所有键。它只是转换到更强大(和仅GUI)的API。对于终端,并非所有终端都可以实际区分这些密钥(<BS> / <C-H>是唯一的例外)。然而,许多现代技术曾经可以再次转变为更强大的API。

有些人(最重要的是Paul LeoNerd Evans)希望解决这个问题(即使是支持Vim的终端中的控制台Vim),并提出了各种提案,cp。 http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8

但截至今天,尚未有任何补丁或志愿者挺身而出,尽管许多人表示希望在未来的Vim版本中实现这一目标。

有关问题的更多详情

由于键盘输入在内部处理的方式,遗憾的是,现在通常无法区分某些键,即使在GVIM中也是如此。某些组合键,例如 Ctrl +非字母无法映射, Ctrl + letter vs. Ctrl + Shift +字母无法区分。 (除非您的终端为其发送不同的 termcap 代码,否则最不要这样做。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/插入,则无法使用该组合键。这也适用于<Tab> / <C-I><CR> / <C-M> / <Esc> / <C-[>等。(只有<BS>例外/ <C-H>。)这是一个众所周知的痛点,也是关于vim_dev和#vim IRC频道的各种讨论的主题。