在 bash/readline 中按空格分隔的單詞移動
在 bash 行編輯中(或在任何使用 GNU readline 的程序中),Meta-f 向右移動一個“單詞”,Meta-b 向左移動一個“單詞”,其中“單詞”由字母組成和數字。這些是
forward-word
和backward-word
命令。(Meta-f 可以是 Alt 修飾鍵或前綴 Escape 鍵。)例如,如果我輸入了
cat /etc/motd
然後重複輸入 Meta-b 將游標移動到
m
,然後是e
,然後是c
.是否有類似移動的命令,但由空格分隔的單詞,所以
/etc/motd
是單個單詞?(我經常使用很長的文件路徑,我希望能夠輕鬆地跳過它們。我的解決方法是重複鍵入現有的單詞移動命令,或者鍵入 ^X ^E 來啟動編輯器。 )
在 vim 中,
w
按b
單詞前後移動,並按W
空格B
分隔的單詞移動。我正在尋找類似的東西。我查看了
readline
文件,我懷疑答案是否定的,但也許我錯過了一些東西。
如果你這樣做了,
set -o vi
那麼 readline 將採用vim
樣式命令,並且w
/W
和b
/B
將具有與 Vim 本身相同的 word/WORD 行為。在編輯命令行時,我經常使用W
/B
跳過完整路徑、url 等。我從輸出中bind -l
看到 readline 命令綁定到W
andB
是vi-forward-bigword
andvi-backward-bigword
。或者,我們有
shell-forward-word
和shell-backward-word
。根據 bash 手冊頁,這些命令由shell 元字元移動,這些元字元是在不加引號時分隔 words的字元。因此,它們比vi-*-bigword
命令更“激進”,但對於跳過長路徑,它們幾乎總是能做到這一點。因此,例如,您可以這樣做
bind '"\C-x": shell-backward-word'
並且Ctrl
+x
將按照描述的方式執行。