我注意到bash有一个ctrl+的捷径,T它交换了光标前的最后两个字符。
我想知道为什么工程师决定包括这个。
- 它是从以前的惯例继承来的吗?
- 还是有一个通常用于的实际目的?
readline
ChangeLog
这层含义。因此,该快捷方式最初是在Bash本身中处理的,尽管readline
只是短暂的,然后才被拉进来-但该快捷方式来自Emacs的Bash(我不知道它是在Emacs中发明还是来自其他地方)。
我注意到bash有一个ctrl+的捷径,T它交换了光标前的最后两个字符。
我想知道为什么工程师决定包括这个。
readline
ChangeLog
这层含义。因此,该快捷方式最初是在Bash本身中处理的,尽管readline
只是短暂的,然后才被拉进来-但该快捷方式来自Emacs的Bash(我不知道它是在Emacs中发明还是来自其他地方)。
Answers:
这是从GNU Emacs(通过readline)继承的,它使用control- T来转置字符:
https://www.gnu.org/software/emacs/manual/html_node/emacs/Transpose.html
请注意,bash的行编辑器默认为Emacs模式,但您也可以根据需要将其切换为vi模式。
快速修复错别字非常有用:
sl
变成
ls
与单CtrlT。
您也可以AltT用来交换单词(例如,在service
和之间切换systemctl
)。
从历史上讲,该CtrlT功能极有可能是来自Emacs的Bash。它可能是从其他一些编辑器复制到Emacs的。到1980年,它已经出现在斯坦福大学的E编辑器中(请参阅Essential E第13页),并且E对Richard Stallman产生了重大影响(如《自由与自由》中所述)。它是在Bash的早期版本中实现的,在1989年首次发布之前,当时它被拉入了readline
它现在所居住的库中(在此readline
ChangeLog
提示中的第一个条目)。
word1 word2 word3
为word3 word2 word1
如果在执行word3
。
此组合键是从emacs
编辑器继承的绑定,它导致键入的最后2个字符在行的末尾交换(在行的中间使用),它将交换光标左侧的字符和交换光标左侧的字符。光标。
对于很少使用的功能具有约束力,而只需再多击几个键就可以轻松实现。像我这样的旧计时器经常使用,它可以节省300波特调制解调器时代(70年代后期)的传输时间,尤其是在长线路的中间。
绑定到Alt+ 的类似且更有用的命令T将单词置于光标的左侧和右侧。
T选择它是因为它是转置的首字母。其他具有相似起源的绑定包括:
这些绑定是在GNU readline包中实现的,因此在所有使用它进行用户输入的程序中都可用,例如bash,还有gdb,bc,...
其中一些在其他环境中也可用:Firefox URL输入行,OS / X图形界面中的文本输入字段以及许多基于X的窗口管理器。
vim用户可以通过环境变量选择相应的绑定。
Alt
和Ctrl
版本以一致的方式相关时,它确实有助于记忆。
C-t
但是似乎什么也没做。 wiki.archlinux.org/index.php/GTK%2B#Emacs_keybindings
bash
,而是readline
(bash在提示符下用于输入)。您的bash正在使用emacs
键绑定;如果您是《编辑大战》的游击队员,则可以更改为vi键绑定;)sanctum.geek.nz/arabesque/vi-mode-in-bash这里提供了几个“备忘单”readline
:readline.kablamo.org/emacs .html和readline.kablamo.org/vi.html。