终端中的Ctrl+L

Par*_*rto 48 command-line shortcut-keys

我不小心在终端中输入了ctrl+ L,我的终端窗口跳了一个“满屏”大小。我查看了“编辑”->“键盘快捷键”中的键盘快捷键,但没有找到该快捷键。

ctrl+L有什么作用,它在哪里定义?

sou*_* c. 67

ctrl+L只需清除终端屏幕。

它是等效于命令的键盘快捷键clear -x参考

它是 的属性bash,因此您没有在 gnome 终端的键盘快捷键下找到它。来自man bash

clear-screen (C-l)
          Clear the screen leaving the current line  at  the  top  of  the
          screen.   With  an  argument,  refresh  the current line without
          clearing the screen.
Run Code Online (Sandbox Code Playgroud)

查看Bash 键盘快捷键的详细列表。

  • 不过,这不仅仅是 bash;Ctrl-L 是换页符。这并不常见,但有时您会在源代码中看到 ^L 分隔代码的“页面”。当打印机将其解释为控制字符时更有意义。 (3认同)

Rma*_*ano 20

如果您使用的 shell 没有拦截它,则您正在终端中键入“换页”字符。如果终端应用程序没有以某种方式拦截或使用击键,Ctrl+Letter 将被转换为字母减 64(1) 的 ASCII 代码。65 是 'A' 的 ASCII 码,'L' 是第 12 个字母 -> 代码 76。如果 shell 不知道如何处理代码,它会打印出来。

打印 FF 字符会在行式打印机上生成一个新页面,并在终端上显示一个清晰的屏幕(是的,当时我使用了300 波特的VT-52)。

所以Ctrl+L是 12,也就是 FF。同样,Ctrl+I是一个 TAB,而Ctrl+ 会G响铃 --- 如果终端或外壳没有拦截它,例如Ctrl+ C

从另一个答案中注意:似乎 bash确实拦截了CTRL-L并执行了clear. 尼斯触摸该bash作者相关的命令的关键,这将做更多或更少相同的ASCII码做旧终端!

另一方面,在我zsh的组合中CTRL-I作为TABCTRL-H作为Backspace(2)。

旧的漂亮的 ASCII...(注意字母 L 位于第 4 列第 12 行,它的 ASCII 代码为 4*16+12=76)。

图片来自维基共享资源

此处的原始图片,来自维基百科关于 ASCII 的文章


脚注:

(1)Ctrl真正用于清除位 7。

(2) 这是您有时会发现的“无法删除单词”笑话的来源,例如“这是一个糟糕的 ^H^H^H 不是个好主意”......(通常一个词比坏词强!)


ale*_*xis 7

Control-L被拦截和bash的解释(实际上是由readline,它处理的命令行交互编辑)。clear-screen正如@souravc 所写,它绑定到该函数。

注意其含义Control-L它在ASCII字符表中被定义为换页符,但除非某些程序对其进行相应解释,否则这没有任何意义。终端在看到换页时不会清除屏幕,因为您可以通过将 ^L 保存在文件中并使用cat. 当bash/readline看到 时^L,它执行clear-screen函数。这会发送您的终端模拟器可以理解的一系列字符(如 termcap 或 terminfo 所述),并具有清除屏幕的效果。

在非常旧的打印机中,a^L将推进纸张在下一张纸上开始打印,因此得名“换页”。但是现代终端和终端仿真器遵循更新的 ANSI 标准,其中控制命令是以(escape)开头的多字符“转义码”^[。当 bash 看到您的 时^L,它可能会发送两个命令序列ESC [ H ESC [ J,它移动到屏幕的左上角并清除其下方的所有内容(因此是整个屏幕)。