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