为什么当我使用 Ctrl+字符键盘快捷键时终端中会出现 ^C、^V 等?

为什么当我使用 Ctrl+字符键盘快捷键时终端中会出现 ^C、^V 等?

有时,当从命令输​​出中复制粘贴文本时,我会意外地使用Ctrl+c而不是Ctrl+ Shift+ c

因此命令行将其解释为^C......

这是为什么?为什么命令行将输入解释control^

答案1

它实际上并没有插入字符序列“^C”。这只是不可打印的 ASCII 控制字符的表示,例如:

  • ^C→ ETX(文本结束,发送终止信号),ASCII 0x03
  • ^D→ EOT(传输结束,终止输入),ASCII 0x04
  • ^H→ BS (退格键, \b), ASCII 0x08
  • ^J→ LF(换行,\n),ASCII 0x0A
  • ^L→ FF(换页,新页面,清除终端),ASCII 0x0C
  • ^M→ CR(回车符\r),ASCII 0x0D

这只是可以使用键盘插入的 ASCII 控制字符的一小部分;您可以找到完整列表这里

我认为需要记住的最重要的是Ctrl+ CCtrl+DCtrl+ L

答案2

因为CTRL+KEY组合被终端解释为不可打印的 ASCII 字符,而由于这些不可打印的字符,您需要一种方法来表示它们。

该公约源于具有 ANSI 支持的 VT 终端,是用插入符号 ( ) 和来表示CTRL+KEY组合。CTRL^KEYKEY

答案3

当从终端复制和粘贴时,最佳做法是分别使用快捷方式Ctrl+InsertShift+ Insert

这些是终端使用的更传统的快捷方式,但您会注意到在 X 图形环境中Ctrl+InsertShift+与相同的+和+Insert绑定。CtrlCCtrlV

在大多数终端中,Ctrl+ C(用 表示^C)用于暂停某个进程的执行,因此使用该快捷方式粘贴将不起作用。

为了快速复制和粘贴,您可以利用 X 的主缓冲区,突出显示要复制的任何文本,然后在要粘贴的位置单击鼠标中键。无需键盘。

答案4

应该使用Ctrl+C而不是Shift+ Ctrl+ C,因为在命令行上,它们的作用相同(并且Ctrl+CShift+ Ctrl+更容易C)。在某些图形环境中,GUI 会捕获某些击键并执行一些特殊操作,但这可能并非如此,但如果击键确实发送到命令行,则没有区别。这就是为什么按Ctrl+C可能会将 ^C 显示为大写 C,而不是小写 C。命令行不会区分您按的是哪个(并且大写字母可能被认为更容易阅读)。对于字母来说确实如此;对于其他字符,可能Shift会有影响。)

Ctrl-C键会发送比大写字母在 ASCII 表中的位置低 64 个字符的 ASCII 代码(比小写字母在 ASCII 表中的位置低 96 个字符)。因此,按Ctrl- c(小写)键会发送 ASCII 代码 3(比大写字母C的 ASCII 代码 67 小 64 个字符)。在许多环境中,您可以按住数字键盘Alt然后按下3(然后松开该3键,再松开该Alt键),您可能会得到相同的效果。

关于 ^C,^ 只是“ ”键的众所周知的简写Ctrl。同样,M- 是“ ”键的简写Alt。呃,是的。M 代表单词“Meta”,可以通过按住Alt并按下接下来的键来输入,或者有时通过按下Esc(并释放Esc)然后按下接下来的键来输入。 维基百科关于“控制键”的文章:“符号”部分将其描述为“传统符号”。这也称为插入符号(维基百科关于插入符号的文章Unix StackExchange:ryvnf 关于插入符号的问题)。

关于最后一个问题,命令 shell 不会将任何东西“解释”为插入符号。换句话说,shell 不会读取任何东西,并认为它是插入符号。实际发生的情况是,shell 使用众所周知的插入符号表示法进行输出。再举一个例子,您可以通过运行以下命令查看众所周知的分页程序“less”使用插入符号表示法:dd if=/dev/zero bs=64 count=1 | less

Ctrl(“nano”文本编辑器还在其在线帮助中使用插入符号,包括按下 ^G(又名- )后显示的全屏在线帮助g。)

相关内容