是否可以配置ctrl-w(删除字)?


40

通常,Ctrl+ W会删除回到最后一个空格。

是否可以将其配置为使用其他字符,例如/

编辑:更清楚地说:我不想为其配置密钥,我也希望删除停止/

例:

vim /foo/bar^W
vim /foo/

Answers:


29

对我有用的是将以下行添加到我的.bashrc中

stty werase undef
bind '\C-w:unix-filename-rubout'

您需要undef行,否则bash将忽略您的新绑定 C-w


3
应当注意,这stty werase undef将阻止您在任何程序中使用Cw(绑定将使您可以在readline中使用)
0fnt

24

您应该能够使用Esc,然后使用Backspace删除由斜杠分隔的单词。

您可以通过将其放入.bashrc来更改此设置:

bind '\C-f:unix-filename-rubout'

现在使用Ctrl+f 做您想要的。


1
谢谢,这是有效的命令。有没有办法覆盖Cw的命令?如果将其更改为C-w:...,则仍会执行删除到下一个空格的默认行为。在其他键(如F)上运行正常。
SkaveRat 2012年

我不认为ctrl-w仅由shell管理。它也可以由tty管理。您显示的tty设置是stty -a什么?您是否将control-w作为werase的默认字符?如果使用comman从tty中删除该设置stty werase undef,那么bash是否可以按预期工作?
eppesuig

23

对于此特定问题,您还可以使用:

Alt + Backspace

$ cd /home/me/test/a_dir/    # Alt + Backspace
$ cd /home/me/test/          # Alt + Backspace
$ cd /home/me/               # ...

很好的参考:bash单词擦除的冒险


2
太棒了!大多数其他答案都建议将其重新绑定Ctrl+w或Ctrl + b或unix-filename-rubout,但要好得多,因为它内置了绑定:M-backspace(Alt + backspace或Esc backspace)
Colin D Bennett

不适用于我
ethanjyx

@ethanjyx哦。我正在研究GNU bash。您也有这种味道吗?
fedorqui '16

7

使用bash可以达到预期的效果,将以下内容放入〜/ .bashrc文件中:

bind '"\C-w":backward-kill-word'

点击CTRL+V和您的按键组合,以查看终端模拟器的外观。例如,CTRL+bksp可以在不同的终端上解释不同,例如^H^?。该^角色是一样的CTRL


我想我的问题不够具体。我想拥有/一个额外的停止字符,而不是将delete-word-command绑定到另一个键上的方法。我编辑了我的问题
SkaveRat 2011年

使用绑定到\ Cw的向后杀人字,它将在单词中出现时向后擦除到最后给定的正斜杠,并且将擦除由空格分隔的单词。这不是你想要的吗?

我的系统使用^F-但"\^F"在上面的脚本中使用不起作用
SkaveRat 2012年

1
Ctrl角色被写\C在剧本,而不是\^
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.