Bash 退格鍵一次刪除一個單字

Bash 退格鍵一次刪除一個單字

我工作中有一台伺服器使用 csh 作為預設 shell。我更喜歡 bash,所以每當我登入時,我都會啟動bash.

但由於某種原因,退格按鈕會刪除完整的單字,而不僅僅是刪除字元。這是為什麼?我如何更改此設定並讓 Bksp 逐一刪除字元?

僅供參考,Shift+Bksp 逐個字元刪除。如果可以的話,我想讓 Shift+Bksp 逐字刪除。只要可能的話。

謝謝

PS:請不要告訴我按住shift鍵;這真是太煩人了。

答案1

有些終端發送^h(字符號8)作為BackSpace密鑰,有些終端發送^?(字元符號127)。可以配置許多終端模擬器,大多數程式都可以配置為知道需要哪個鍵。顯然,雙方必須達成協議。

stty 是應用程式查詢終端配置的一種方式。erase = ^?意味著你的伺服器上的終端描述檔聲稱,當你的終端發送 時^?,它的意思是「刪除前一個字元」。werase = ^?意思^?是「刪除前一個單字」。這兩個設定之間存在矛盾。

當您透過 ssh 登入時,ssh 用戶端會傳送終端名稱,該名稱會放入TERM環境變數中。然後,伺服器上的程式在資料庫(稱為 termcap 或 terminfo)中尋找終端的描述。如果這些描述被破壞,或者某個設定檔(例如/etc/profile~/.login~/.bashrc)用錯誤的資料覆蓋了描述,您可能會發現不符。例如,問題的一個可能根源是,當您的終端發送退格鍵時,某些初始化檔案是否包含命令stty werase '^?'(強制^?刪除單字) 。^?

理想情況下,您應該解決衝突,因為許多程式都會讀取此資訊。

在 Putty 中,您可以設定要發送哪個^?鍵。檢查此設定的值。也許解決問題的最簡單方法是讓 Putty 發送,並確保伺服器使用該設定(放入,將強制它)。^hBackSpace^hBackSpacestty erase '^h'~/.bashrc

相關內容