有人能解释Ctrl+i和Tab键发送相同代码的原因吗
我只能想这是因为"历史原因"。
例如,这个事实可能会影响vim的行为,比如这个问题中的一些绑定。
我认为这与Tab在ascii中的编码方式有关。
如果我们看看这个ascii表和ascii的手册页(复制如下)
Oct Dec Hex Char Oct Dec Hex Char
────────────────────────────────────────────────────────────────────────
000 0 00 NUL ' ' 100 64 40 @
001 1 01 SOH (start of heading) 101 65 41 A
002 2 02 STX (start of text) 102 66 42 B
003 3 03 ETX (end of text) 103 67 43 C
004 4 04 EOT (end of transmission) 104 68 44 D
005 5 05 ENQ (enquiry) 105 69 45 E
006 6 06 ACK (acknowledge) 106 70 46 F
007 7 07 BEL 'a' (bell) 107 71 47 G
010 8 08 BS 'b' (backspace) 110 72 48 H
011 9 09 HT 't' (horizontal tab) 111 73 49 I
012 10 0A LF 'n' (new line) 112 74 4A J
013 11 0B VT 'v' (vertical tab) 113 75 4B K
014 12 0C FF 'f' (form feed) 114 76 4C L
015 13 0D CR 'r' (carriage ret) 115 77 4D M
我们可以看到tab是ascii字符集中的第9个字符(十进制)。每个非打印字符都可以通过使用控件和字母表中的第i个字母来键入。由于I是字母表中的第9个字母,<C-I>
是Tab。这也是回车显示为^M
的原因。
至于vim为什么对他们一视同仁。这可能是很久以前的遗留问题,当时使用控制键是很重要的。