打算在bash中使用ctrl + T吗?


47

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

我想知道为什么工程师决定包括这个。

  • 它是从以前的惯例继承来的吗?
  • 还是有一个通常用于的实际目的?

13
这不是一个答案,但这不是bash,而是readline(bash在提示符下用于输入)。您的bash正在使用emacs键绑定;如果您是《编辑大战》的游击队员,则可以更改为vi键绑定;)sanctum.geek.nz/arabesque/vi-mode-in-bash这里提供了几个“备忘单” readlinereadline.kablamo.org/emacs .htmlreadline.kablamo.org/vi.html
约翰N

13
从历史上看,Emacs风格的命令行编辑功能最初开发猛砸,然后变成了一个单独的库-但在1989年中的第一个条目的第一个版本以前发生readline ChangeLog这层含义。因此,该快捷方式最初是在Bash本身中处理的,尽管readline只是短暂的,然后才被拉进来-但该快捷方式来自Emacs的Bash(我不知道它是在Emacs中发明还是来自其他地方)。
史蒂芬·基特

Answers:



63

快速修复错别字非常有用:

sl

变成

ls

与单CtrlT

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

从历史上讲,该CtrlT功能极有可能是来自Emacs的Bash。它可能是从其他一些编辑器复制到Emacs的。到1980年,它已经出现在斯坦福大学的E编辑器中(请参阅Essential E第13页),并且E对Richard Stallman产生了重大影响(如《自由与自由》中所述)。它是在Bash的早期版本中实现的,在1989年首次发布之前,当时它被拉入了readline它现在所居住的库中(在此readline ChangeLog提示中的第一个条目)。


2
交换文字​​是新事物,而且非常有帮助
Mongrel,2016年

向Alt + T提供数字参数会将单词在光标处(或之前)与该单词之前的第n个单词转置。例如:Alt + 2 Alt + T将修改word1 word2 word3word3 word2 word1如果在执行word3
crw

@crw很好,但是alt + T不会在我的终端上交换单词。我只是打开菜单项“设置标题”。
菲利普·柯比布莱德

@PhilipKirkbride太可惜了,您的终端仿真器剥夺了您一个非常有用的快捷方式……
Stephen Kitt

@PhilipKirkbride,终端仿真器应该有一个选项可以禁用菜单访问键
Joril

15

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

对于很少使用的功能具有约束力,而只需再多击几个键就可以轻松实现。像我这样的旧计时器经常使用,它可以节省300波特调制解调器时代(70年代后期)的传输时间,尤其是在长线路的中间。

绑定到Alt+ 的类似且更有用的命令T将单词置于光标的左侧和右侧。

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

  • Ctrl+ B向后),将光标向左移动一个位置,
    • Alt+ B将光标向左移动一个字,
  • Ctrl+ F向前移动,将光标向右移动一个位置,
    • Alt+ F将光标向右移动一个字,
  • Ctrl+ A,对于Anfangante,将光标移动到行首,
  • Ctrl+ E,对于end,将光标移动到行的结尾,
  • Ctrl+ N,对于next,检索下一行,
  • Ctrl+ P,对于上一个,检索下一行,
  • Ctrl+ D,对于delete,删除光标下方的字符,
    • Alt+ D删除光标下方的单词,
  • Ctrl+ K,代表kill,切入行尾,
  • Ctrl+ Y,对于yank,粘贴剪贴板的内容,

这些绑定是在GNU readline包中实现的,因此在所有使用它进行用户输入的程序中都可用,例如bash,还有gdbbc,...

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

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


是的,这对像我们这样的人非常有用,他们有时忘记了我们正在输入终端而不是Emacs。在使用Firefox的textarea小部件(现在像这样的小部件)时,我仍然感到困惑,这些小部件缺少这些重要的绑定。:-(
Toby Speight,2016年

有没有办法将描述中相关命令的字符和单词版本配对?当您认识到这些击键的AltCtrl版本以一致的方式相关时,它确实有助于记忆。
Toby Speight

@TobySpeight GTK +支持另一个Emacs样式的键绑定主题,因此您可以在Firefox中使用其中的一些键绑定。 C-t但是似乎什么也没做。 wiki.archlinux.org/index.php/GTK%2B#Emacs_keybindings
Candy Gumdrop 2016年

@TobySpeight您是否尝试过“全部文字”!?它允许您在所选的编辑器中编辑文本区域的内容。
史蒂芬·基特

谢谢@Stephen-我听说过,但尚未尝试过。我会跟进...
Toby Speight 2016年

10

它是vrey useufl,用于在偶然的情况下正确放置生菜的派拉尔来矫正半个tpyos。

(两只手的RSI严重,我个人经常使用它。)


2
我的眼睛在流血
基本的

4

一个非常快速的拼写错误。在自动补正器之前执行立即2校正器块。

如果您输入的ls-ls&连字符,则可以使用Ctrl+T

如果您在连字符后加空格,然后执行Ctrl+T

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.