重击:删除光标前面的单词


76

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

svn commit -m very/long/path/to/some/file "[bug 123456] Fix the pixel issue"
              ^

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

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


2
Ctrl u是从游标位置到开始擦除的一个选项...
关于natty的细节

23
alt + d如果设置了emacs编辑模式,请尝试一下,这可能会很有用。

@Mik如何启用emacs模式?
亚当·马坦

@AdamMatan set -o emacs启用它,但通常是默认设置;如果没有,您可以将该行放在.bashrc或中.bash_aliases,然后获取文件或重新加载终端。但是,尽管在ctrl + c之类的快捷方式不是Bash快捷方式,但您在vi模式下可能习惯的快捷方式将不可用。

Answers:


56

在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'

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

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


31
Alt-d为我工作
ricab 2015年

8
通常,在不存在Meta的键盘世界中,Alt = Meta。
Nate CK

在您有许多不同键盘的世界中,一个方便且相当有用的事实是,作为前缀的Esc也可以充当Meta。
2015年

1
简而言之,例如,将其添加到$ HOME / .inputrc文件中:"\ew": shell-kill-word ,这将使Alt-w正向删除一个单词,就像CTRL-w向后删除一个单词(并且与Alt-d会向前删除但停在例如/或-和其他字符)
user964970 '17

7

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


12
Option + d给我∂在OSX
伊万巴拉瑟夫

4
-1 OSX不是Ubuntu。随时添加评论,但这不是答案。
wjandrea

您必须首先在终端首选项(配置文件->键盘选项卡->复选框)中启用“使用选项作为元密钥”复选框
nils petersohn18年

control + d在Mac Sierra上
mfink '18

2
@IvanBalashov(如果使用iterm)将let opt键设置为esc +。在“个人资料”>“密钥”下
tessie
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.