我想更改分隔符bash(或readline)用于分隔单词。具体来说,我想让'-'
不分隔单词,这样如果我有文本
ls some-file
然后按Alt-Backspace
它会删除整个some-file
文字,而不仅仅是'-'
字符。这也会导致--group-directories-first
等长标记的删除变得更快更容易,只需按一次按键。
我相信这就是zsh的行为方式,我想以同样的方式使bash表现出来。
答案 0 :(得分:7)
ctrl-w完全符合您的要求。
答案 1 :(得分:3)
要记住的一件事是,如果你有分配给ctrl-W的stty werase设置,ctrl-W的bash键映射将不起作用。如果您运行“stty -a”并且您看到“werase = ^ W”将优先使用并使用tty想法的单词边界是什么。 tty关于单词边界的想法通常是空白,而bash的后向杀词功能也包括 - 和/.
如果你想让Alt-Backspace与werase设置做同样的事情,你可以这样做: bind'“\ M- \ C-h”:unix-word-rubout' bind'“\ M- \ C-?”:unix-word-rubout'
另外,如果你真的想让ctrl-W做Alt-Backspace做的事情,你会做: stty werase undef#除非你这样做,否则bash会忽略follow bind命令 bind'“\ C-w”:backwards-kill-word'
答案 2 :(得分:1)
这可能很有用:Ctrl-r将启动反向搜索(对于历史记录和当前行),因此您可以点击空格并转义它并返回到您想要的位置,或者再次按ctrl-r(在击中第一个空间后)如果你想再回到一个arg。然后你可以选择杀死该行的其余部分。
如果您处理长路径参数(例如在cp或diff中),并且需要修改第一个arg的结尾,则特别有用。
试图让\ M-b做到这一点,但它停在斜线上。