在 bash 中预期使用 ctrl+T 吗?

在 bash 中预期使用 ctrl+T 吗?

ctrl我注意到 bash 有一个+的快捷方式T,它交换光标之前的最后两个字符。

我想知道为什么工程师决定加入这个。

  • 它是从以前的约定继承下来的吗?
  • 或者这有什么常用的实际目的吗?

答案1

快速修复拼写错误非常有用:

sl

变成

ls

与单个CtrlT.

AltT也可以用来交换单词(例如service在和之间切换时systemctl...)。

从历史上看,该CtrlT功能很可能是从 Emacs 转移到 Bash 的。它可能是从其他编辑器复制到 Emacs 的;它出现在斯坦福大学的 E 编辑器中(参见必需E第 13 页)到 1980 年,E 对理查德·斯托曼(Richard Stallman)产生了强烈的影响(如自由如自由)。它是在 Bash 的早期版本中实现的,在 1989 年首次发布之前,它被拖入了readline今天所在的库(Bash 中的第一个条目)。readline ChangeLog对此有提示)。

答案2

这是(通过 readline)从 GNU Emacs 继承的,它使用control-T来转置字符:

https://www.gnu.org/software/emacs/manual/html_node/emacs/Transpose.html

请注意,bash 的行编辑器默认为 Emacs 模式,但如果您愿意,也可以将其切换为 vi 模式。

答案3

此组合键是从文本编辑器继承的绑定emacs,导致最后键入的 2 个字符在行尾交换,在行中间使用时,它交换光标左侧的字符和下面的字符光标。

对于这样一个很少使用的功能进行绑定似乎是徒劳的,而只需多敲几下按键就可以轻松实现。像我这样的老手经常使用它,在 70 年代末的 300 波特率调制解调器时代,它可以节省一些传输时间,尤其是在排长队的时候。

一个类似且更有用的命令绑定到Alt+ T,调换光标左侧和右侧的单词。

T被选中是因为它是 的首字母转置。其他具有类似起源的绑定包括:

  • Ctrl+ B, 对于落后, 将光标向左移动一位,
    • Alt+B将光标向左移动一个单词,
  • Ctrl+ F, 对于向前,将光标右移一位,
    • Alt+F将光标向右移动一个单词,
  • Ctrl+ A, 对于安芳或者赌注,将光标移动到行首,
  • Ctrl+ E, 对于结尾, 将光标移动到行尾,
  • Ctrl+ N, 对于下一个,检索下一行,
  • Ctrl+ P, 对于以前的,检索下一行,
  • Ctrl+ D, 对于删除, 删除光标下的字符,
    • Alt+D删除光标下的单词,
  • Ctrl+ K, 对于,切断线的末端,
  • Ctrl+ Y, 对于猛拉,粘贴剪贴板的内容,

因此,这些绑定在 GNUreadline包中实现,可用于所有使用它进行用户输入的程序,例如巴什, 但是也数据库,公元前, ...

其中一些在其他环境中也可用:Firefox URL 输入行、OS/X 图形界面中的文本输入字段以及许多基于 X 的窗口管理器。

维姆用户可以通过环境变量选择相应的绑定。

答案4

非常快速地修复错别字。影响课程者之前的直接 2 校正器块。

如果您键入ls-并希望ls& 连字符之间有一个空格,那么您可以使用Ctrl+T

如果连字符后有空格,则此方法有效,然后执行Ctrl+T

相关内容