Ctrl+I 和 Tab 键发送相同代码的原因是什么?

Ale*_*hov 1 keyboard vim terminal

Ctrl有人可以解释+i和键发送相同代码的原因是什么吗Tab?
我只能弄清楚这是因为“历史原因”。

例如,这个事实可能会影响 vim 与某些绑定的行为,就像这个问题一样。

FDi*_*off 7

我认为这与 Tab 在 ascii 中的编码方式有关。

\n\n

如果我们查看这个ascii 表和 ascii 的手册页(复制如下)

\n\n
Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char\n\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n000   0     00    NUL \'\\0\'                    100   64    40    @   \n001   1     01    SOH (start of heading)      101   65    41    A   \n002   2     02    STX (start of text)         102   66    42    B   \n003   3     03    ETX (end of text)           103   67    43    C   \n004   4     04    EOT (end of transmission)   104   68    44    D   \n005   5     05    ENQ (enquiry)               105   69    45    E   \n006   6     06    ACK (acknowledge)           106   70    46    F   \n007   7     07    BEL \'\\a\' (bell)             107   71    47    G   \n010   8     08    BS  \'\\b\' (backspace)        110   72    48    H   \n011   9     09    HT  \'\\t\' (horizontal tab)   111   73    49    I   \n012   10    0A    LF  \'\\n\' (new line)         112   74    4A    J   \n013   11    0B    VT  \'\\v\' (vertical tab)     113   75    4B    K   \n014   12    0C    FF  \'\\f\' (form feed)        114   76    4C    L   \n015   13    0D    CR  \'\\r\' (carriage ret)     115   77    4D    M   \n
Run Code Online (Sandbox Code Playgroud)\n\n

我们可以看到制表符是ascii字符集中的第9个字符(十进制)。每个非打印字符都可以使用 control 和字母表中的第 i 个字母来键入。因为 I 是字母表中的第 9 个字母,所以<C-I>是 Tab。这也是回车显示为 的原因^M。

\n\n

至于为什么vim对他们一视同仁。这可能是很久以前的遗留下来的,当时使用控制键来实现这一目的很重要。

\n