將輸入刪除回最後一個正斜杠

將輸入刪除回最後一個正斜杠

我經常會在伺服器上的多個文件之間切換。我將按順序運行以下範例命令:

nano /web/site/path/to/file
/web/site/script.py
nano /web/site/path/to/anotherFile
nano /web/site/path/to/yetAnotherFile
/web/site/script.py
nano /web/site/path/to/etc

要從一個nano命令轉到下一個命令,我目前按UpBackspace替換路徑的最後一段。問題是我真的真的懶惰的。

是否有鍵盤快速鍵(或 Bashism)可以:

  • 被最後使用的路徑替換(末尾有一個額外的位元)
  • 刪除目前行(例如按 後Up)回到最後一行/

答案1

我認為您正在尋找Alt+Backspace快捷方式。

按此鍵後Up應刪除回前一個/space字元。

答案2

若要偵測以您希望的方式向後刪除單字的 readline 綁定,您可以在終端機中使用以下命令:

bind -p | awk '/kill/ && /word/ && /backward/'

在預設的 Ubuntu 安裝中,輸出可能是:

"\e\C-h": backward-kill-word
# shell-backward-kill-word (not bound)

此時第二行似乎並不重要,所以讓我們試著看看第一行的含義。據我了解,backward-kill-wordreadline 函數實際上刪除所有字符,直到前一個特殊字符(、/等)綁定到按鍵序列。現在,按照這個順序;,\e\C-h\e 代表Esc\C-Ctrl鍵,\C-h代表Ctrl+h哪一個在這種情況下是等價的Backspace鑰匙。

所以,您正在尋找Esc+ Ctrl+h鍵盤快速鍵相當於Esc+Backspace其中,因為 xterm 的行為使得Altkey 充當元字符,並且元字符被轉換為兩個字符序列,字符本身前面帶有Esc(請參閱man xterm, 等價於Alt+Backspace

現在,如果您不喜歡它並且繼續忘記它,您可以使用以下命令來建立新的快捷方式,例如Esc+ w,以滿足您的目的:

bind '"\ew": backward-kill-word'

要使這個新快捷方式對於所有使用 readline 的命令始終有效,請將以下行添加到您的~/.inputrc文件中:

"\ew": backward-kill-word

請參閱help -m bind | sensible-pager以獲取更多資訊。

答案3

另一個組合鍵是:

Alt+B然後Ctrl+K

Alt + B     Move cursor backward one word on the current line    
Ctrl + K    Clear the line after the cursor

Alt+B然後Alt+D

這會刪除最後一個單詞,而不刪除單字之間的特殊字元。

相關內容