Bash:删除光标前的单词

Ada*_*tan 89 command-line bash shortcut-keys

考虑以下 bash 命令行,其中 ^ 表示光标位置:

svn commit -m very/long/path/to/some/file "[bug 123456] Fix the pixel issue"
              ^
Run Code Online (Sandbox Code Playgroud)

我想提交具有相同消息的不同文件。如何删除当前单词,从光标位置到下一个空格?是否也有向后删除的快捷方式,将光标形成向后的第一个空格?

更新: ctrl +w向后擦除,但哪个快捷方式向前擦除一个字?

Nyk*_*kin 61

在 unix.stackexchange.com 上回答了类似的问题:

Bash 具有默认未绑定的 readline 命令。您可以在参考中找到它们:http : //www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html#Bindable-Readline-Commands

您正在寻找的命令称为“shell-backward-kill-word”。您必须先选择快捷方式。让我们使用 Crtl+p,因为它是“上一个命令” - 与向上箭头相同。

bind '"\C-p": shell-backward-kill-word'
Run Code Online (Sandbox Code Playgroud)

唯一的区别是您必须改用“shell-kill-word”命令,因为您要向前删除。

还有一个带有Meta+d快捷方式的“kill-word”命令(如果您没有 Meta 键,请尝试Esc+ d)。它一次只会删除路径的一部分。

  • Alt-d 对我有用 (36认同)
  • 通常,在不存在 Meta 的键盘世界中,Alt = Meta。 (9认同)

小智 12

在 OSX Mavericks 上测试了esc+dalt/ opt+ d,它们也在那里工作。

  • `Option + d` 在 OSX 上给了我 ∂ (17认同)
  • -1 OSX 不是 Ubuntu。随意添加评论,但这不是答案。 (4认同)
  • @IvanBalashov 如果您使用 iterm,请将您的 let opt 键设置为 esc+ 。在 Profiles >keys 下 (4认同)