如何在終端中從“/”刪除到“/”?
我正在使用 Kitty 模擬器和 bash shell。
我知道
Ctrl
+我可以在終端w
中刪除一個單詞Ctrl
(如+Backspace
)。但是如果我有這樣的東西怎麼辦:sh /home/user/dir1/dir2/file.sh
我只想刪除
file.sh
?我不能用
Ctrl
+刪除,w
因為這樣整行都會被刪除,我不想手動刪除它。任何建議如何從一個路徑元素中刪除?
如果我理解正確,您使用的是帶有預設 Emacs 樣式編輯的 bash。然後Emacs 備忘單可能會有所幫助 - 您可以
Alt+Backspace
(backward-kill-word) 刪除回最後一個單詞的開頭。
在
bash
和其他用作行編輯器的應用程序中,readline
綁定到werase
tty 行規則設置的任何字元(參見 的輸出stty -a
)最終都會綁定到unix-word-rubout
行為相似的 readline 小元件(向後刪除空格分隔的單詞),在這種情況下,只要字元綁定到werase
,任何將其綁定到不同小元件的嘗試都會被忽略 AFAICT。在大多數係統上,
werase
是^W
在預設的 tty 設置中。因此,為了能夠重新綁定
^W
到 readline 中的其他內容,您首先需要更改該 tty 設置:stty werase '^O'
werase
改為綁定^O
或:stty werase ''
完全禁用它。
然後你就可以做到:
bind '"\C-w": backward-kill-word'
或添加
"\C-w": backward-kill-word
到您~/.inputrc
的,以適用於所有應用程序使用readline
,而不僅僅是bash
.然後, ^W 會以您喜歡的方式刪除單詞(嗯,單詞被定義為字母或數字序列,甚至沒有下劃線)。
這意味著您將無法使用 ^W 刪除沒有自己的行編輯器的應用程序中的單詞。
或者,您可以使用
zsh
而不是bash
所有單詞動作/殺死小元件都是完全可配置的。或者正如@AndreBeaud 已經提到的那樣,使用
Alt
+Backspace
(通常發送^[^H
or^[^?
,後者 inkitty
)在 readline 的 emacs 模式下已經backward-kill-word
預設綁定。