Bash
bash 命令行編輯(Emacs 快捷方式)
在 bash 命令行上編寫命令時,我可以使用
CTRL+w
向後刪除一個單詞,或者ALT+d
向前刪除一個單詞。問題是,這兩個快捷方式並不完全互補:
CTRL+w
刪除直到空格的所有內容,而ALT+d
僅刪除直到任何非字母字元(即停止在/
)是否有一個快捷方式可以作為
ALT+d
,但向後?因此,當我在最後
/etc/hostname
並按下快捷方式時,我最終得到/etc/
.
bind -p
為您提供目前綁定。你會發現它Ctrl+W
綁定到unix-word-rubout
和Alt+D
到kill-word
:"\C-w": unix-word-rubout "\ed": kill-word
如果你做 a
bind -p | grep kill-word
,你會發現:"\e\C-h": backward-kill-word "\e\C-?": backward-kill-word
一些終端發送和其他一些
^H
,這就是為什麼有兩個綁定。這使得它應該是至少在那些發送字元後跟的終端上殺死一個單詞的原因。Backspace``^?``Alt+Backspace``Alt+X``ESC``X
然而,有些終端在發送
X
時設置了第 8 位 (0xD8)Alt+X
(儘管它們變得越來越少,因為這在這個新的 UTF-8 世界中沒有多大意義)。在這些情況下,您必須按Esc
然後Backspace
,或者您可以在 readline 配置中設置convert-meta
為on
(例如使用bind 'set convert-meta on'
),但是您將無法輸入非 ascii 字元。