从OS X中的终端清除命令


24

假设我已经在终端“ mv * .jpg .. \ photos”中键入了一个命令,并且在键入时意识到我不再想要执行该命令。我只想删除整个语句。我不想清除整个屏幕或删除任何bash历史记录,而只是想中止当前行并擦除它。

有键盘快捷键,还是我必须删除每个字符?

Answers:



7

许多等待您键入命令行然后执行该命令行的程序,包括bash,都用Ctrl+ C表示“中止当前任务并返回主提示符”。

包括bash在内的一些程序使用Ctrl+ U在OS X中从终端清除命令)表示“擦除行的开头,直到光标”(或“擦除整行”)。

在bash中,Ctrl+ CCtrl+ 之间的可观察到的差异U包括:

  • 您可以撤消Ctrl+ U,但不能撤消Ctrl+ C
  • Ctrl+ U保留光标之后的行部分(如果有)。
  • Ctrl+ U从屏幕上删除受影响的文本;Ctrl+ C在当前行下方显示一个新提示。

有时您想停止键入命令,而是在外壳历史记录中输入该命令以稍后运行。一个有用的技巧是#在行的开头放置a 并执行它:由于该行现在是注释,因此它不会执行任何操作。在bash中,有一个单键快捷键:Alt+ #


2

有一个readline可能未绑定到称为的按键的函数,该函数kill-whole-line将杀死整个行,而不是仅杀死光标之前的部分(unix-line-discard这有点误用,并绑定到Ctrl- u)。

您可以将其绑定到任何可用的击键。我喜欢ShiftAlt- U因为它是一个相关功能。该击键可能会绑定到do-lowercase-version该键,这意味着它会执行未更改版本的操作(在这种情况下为upcase-word)。由于我们实际上并不需要两个键,因此让我们使用那个。

您可以在命令行中通过以下方式创建绑定来进行尝试:

bind '"\eU":kill-whole-line'

或通过在~/.inputrc文件中添加以下行使其持久化:

"\eU":kill-whole-line

要撤消Ctrl- uShiftAlt- U(或者是可撤消的任何操作),按Ctrl- - Shift_下划线)或Ctrl- - x Ctrlu两次击键)。或者,您可以通过按回粘贴(取消)杀死的内容Ctrl- y如果您想要该文本的多个副本,可以重复进行。

顺便说一句,如果您想杀死从光标到行尾的文本,可以按Ctrl- k。因此,而不是做结合上述的,你可以杀死按一整行Ctrl- - 。u Ctrl k这些击键中的第二次击中的部分将仅保存在击杀缓冲区中,但是您仍然可以执行两次撤消来恢复它们。

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.