问题描述
有时,当命令输出中出现copy-pasting文本时,我会不小心使用Ctrl
+ c
而不是Ctrl
+ Shift
+ c
。
因此命令行将其解释为^C
…
为什么是这样?为什么命令行将control
输入解释为^
?
最佳方案
它实际上并没有插入字符序列”^C”。这仅是不可打印的ASCII控制字符的表示,例如:
-
^C
→ETX(文本结尾,发送终止信号),ASCII 0x03 -
^D
→EOT(传输结束,终止输入),ASCII 0x04 -
^H
→BS(Backspace,\b
),ASCII 0x08 -
^J
→LF(换行符,\n
),ASCII 0x0A -
^L
→FF(换页,新页,清除终端),ASCII 0x0C -
^M
→CR(回车,\r
),ASCII 0x0D
这只是可以使用键盘插入的ASCII控制字符的一小部分。您可以找到完整列表here。
我认为最重要的是Ctrl
+ C
,Ctrl
+ D
和Ctrl
+ L
。
次佳方案
由于CTRL
+ KEY
组合键在终端上被解释为不可打印的ASCII字符,因此,如果要使这些组合不可打印,则需要一种表示它们的方式。
源自VT terminals with ANSI support的约定是表示CTRL
+ KEY
组合,表示带有插入号(^
)的CTRL
和带有KEY
的KEY
。
第三种方案
从终端复制和粘贴时,最佳做法是分别使用快捷键Ctrl
+ Insert
和Shift
+ Insert
。
这些是终端使用的更传统的快捷方式,尽管您会注意到,在X图形环境中,Ctrl
+ Insert
和Shift
+ Insert
绑定到相同的Ctrl
+ C
和Ctrl
+ V
。
在大多数终端中,Ctrl
+ C
(由^C
表示)用于停止过程的执行,因此粘贴快捷方式将无效。
为了快速复制和粘贴,您可以利用X的主缓冲区,突出显示要复制的任何文本,然后突出显示要粘贴的文本middle-clicking。无需键盘。