我想更改分隔符bash(或readline)用于分隔单词.具体来说,我想'-'不分界词,所以如果我有文字
ls some-file
Run Code Online (Sandbox Code Playgroud)
我按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 所做的事情,你可以这样做: stty werase undef # 除非你这样做,bash 会忽略下面的绑定命令 bind '"\Cw":backwards-kill-word'