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