答案1
沒有這樣的東西,你可以看看ctlseq
文件沒有任何提及單字單字。還有一個問題是使用什麼背景顏色來擦除以及是否將單字右側的內容移至左側。您可能必須考慮在終端右側邊緣換行的單字。
您的一些選擇是:
發送與要刪除的單字中的單元格一樣多的 BS 字符,然後發送盡可能多的 SPC(注意它使用當前背景顏色),然後再次發送盡可能多的 BS 字符(將遊標再次移回):
$ printf 'foo bar\b\b\b \b\b\b+\n' foo +
該軟體幾乎可以在所有終端上運行。
相同,但使用
tput cub x
(其中x
是單元格數)將遊標向後移動該量,而不是使用 BS 序列。您可以使用tput ech x
刪除這些儲存格(使用目前背景顏色或不使用目前背景顏色,取決於終端)$ printf 'foo bar'; tput cub 3; tput ech 3; printf '+\n' foo +
而不是
tput ech x
,您可以使用擦除到tput el
行尾,或者tput dch x
刪除x 個儲存格(並將其後的內容向左移動)。
(tput
這裡是 terminfo 資料庫的 shell 接口,其想法是避免硬編碼轉義序列,使用適合您的語言的等效內容)。
看看backward-kill-word
一些 shell 的小部件(script
例如用於記錄其輸出),我看到readline
使用 BS 進行運動和dch
刪除,同時zsh
使用 BS 和 和 重寫的組合cub
。tcsh
似乎正在做一些絕對列定位(hba
)並用於dch
刪除,ksh93 發送一個 CR 並重寫整行。
答案2
我從來沒有見過這樣的順序。如果你仔細想想,刪除一個單字是相當複雜的,比其他操作更複雜,而且我認為任何其他操作都不會以任何方式關心螢幕上的內容。例如,什麼是單字的結尾? '_'? '-'? '.'?