Bash

bash 命令行編輯(Emacs 快捷方式)

  • March 8, 2014

在 bash 命令行上編寫命令時,我可以使用CTRL+w向後刪除一個單詞,或者ALT+d向前刪除一個單詞。

問題是,這兩個快捷方式並不完全互補:CTRL+w刪除直到空格的所有內容,而ALT+d僅刪除直到任何非字母字元(即停止在/

是否有一個快捷方式可以作為ALT+d,但向後?

因此,當我在最後/etc/hostname 並按下快捷方式時,我最終得到/etc/.

bind -p為您提供目前綁定。你會發現它Ctrl+W綁定到unix-word-ruboutAlt+Dkill-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-metaon(例如使用bind 'set convert-meta on'),但是您將無法輸入非 ascii 字元。

引用自:https://unix.stackexchange.com/questions/118776