在 bash/readline 中按空格分隔的单词移动

Kei*_*son 5 bash readline

在 bash 行编辑中(或在任何使用 GNU readline 的程序中),Meta-f 向右移动一个“单词”,Meta-b 向左移动一个“单词”,其中“单词”由字母组成和数字。这些是forward-word和backward-word命令。(Meta-f 可以是 Alt 修饰键或前缀 Escape 键。)

例如,如果我输入了

cat /etc/motd
Run Code Online (Sandbox Code Playgroud)

然后重复键入 Meta-b 将光标移动到m,然后是e,然后是c。

是否有类似移动的命令,但由空格分隔的单词,/etc/motd单个单词也是如此?

(我经常使用很长的文件路径,我希望能够轻松跳过它们。我的解决方法是重复键入现有的 word-move 命令,或者键入 ^X ^E 以启动编辑器。 )

在VIM,w并b向前和向后移动的话,W并B用空格分隔的单词移动。我正在寻找类似的东西。

我查看了readline文档,我怀疑答案是否定的,但也许我错过了一些东西。

B L*_*yer 3

如果你set -o vi这样做,那么 readline 将采用vim样式命令,并且w/W和b/B将具有与 Vim 本身相同的单词/WORD 行为。在编辑命令行时,我通常使用W/跳过完整路径、URL 等。B我从输出中看到绑定到和bind -l的 readline 命令是和。WBvi-forward-bigwordvi-backward-bigword

或者,我们有shell-forward-word和shell-backward-word。根据 bash 手册页,这些命令通过shell 元字符移动,这些字符在不加引号时分隔单词。因此,它们比命令的“攻击性”要小一些vi-*-bigword,但对于跳过长路径,它们几乎总是能做到这一点。

因此,例如,您可以这样做bind '"\C-x": shell-backward-word',并且Ctrl+ 的x行为将如所描述的那样。