我想更改分隔符bash(或readline)用于分隔单词的分隔符。具体来说,我想让'-'
而不限制的话,那么,如果我有文字在bash中更改单词分隔符
ls some-file
,我按Alt-Backspace
它会删除整个some-file
文本,而不仅仅是到'-'
字符。这也会导致像--group-directories-first
这样的长旗子的删除更快,更容易,只需要一次按键。
我相信这就是zsh的行为,我想让bash以同样的方式表现。
我想更改分隔符bash(或readline)用于分隔单词的分隔符。具体来说,我想让'-'
而不限制的话,那么,如果我有文字在bash中更改单词分隔符
ls some-file
,我按Alt-Backspace
它会删除整个some-file
文本,而不仅仅是到'-'
字符。这也会导致像--group-directories-first
这样的长旗子的删除更快,更容易,只需要一次按键。
我相信这就是zsh的行为,我想让bash以同样的方式表现。
有一点需要记住的是,如果您将stty werase设置分配给ctrl-W,则ctrl-W的bash键映射将不起作用。如果你运行“stty -a”,你会看到“werase =^W”,它将优先使用tty的概念来表示单词边界是什么。 tty的单词边界的概念通常是空格,而bash的反向杀词单词功能还包括 - 和/。
如果你想的Alt-Backspace键做同样的事情WERASE设置,你可以这样做: 绑定“‘\ M- \章’:UNIX的字擦去” 结合““\ M- \ C-“:UNIX的字擦去”
此外,如果你真的想使CTRL-W做的Alt-退格键,你会怎么做: 的stty WERASE民主基金#除非你这样做时,bash忽略绑定命令 bind'“\ Cw”:backwards-kill-word'
与OP无关,但'stty werase undef'完全解决了我的问题!谢谢! – 2014-04-28 14:37:12
这可能很有用:Ctrl-r会启动一个反向搜索(对于历史和当前行),所以你可以只是打空间和逃跑,它回来了如果你想返回一个arg,你需要它,或者再次按ctrl-r(在命中第一个空格后)。然后你可以选择杀死该行的其余部分。
如果您要处理长路径参数(例如cp或diff)并且需要修改第一个arg的结尾,那么它尤其有用。
试图让\ M-B做到这一点,但它停止在斜线。
' - '字符在命令行中有特殊含义,所以默认行为并不令人惊讶。如果你能改变它,会不会有副作用?假设你输入了'ls -al some-file',你想删除所有内容吗? – pavium 2009-08-31 12:35:28
@pavium在这种情况下,我希望'some-file'一开始就被删除,当再次按下时,我希望'-al'被删除。 – spatz 2009-08-31 12:48:11
我刚刚在superuser.com上找到[答案](http://superuser.com/questions/547130/bash-readline-for-move-forward-by-whitespace-delimited-word)。 – Ekans 2013-11-12 15:12:53