CTRL我注意到很多時候當我透過+從命令列進行反向歷史搜尋時r,如果我想編輯命令,有時當我按箭頭鍵或輸入CTRL+a或CTRL+時,遊標會跳到錯誤的位置e。它跳到的具體位置似乎是一個等於我在 中設定的命令列提示符大小的偏移量PS1
。
這會帶來困難,因為遊標的實際位置與螢幕上呈現的位置不同;將來對該命令的編輯將呈現為遊標位於其跳到的位置,但實際命令保留正確的位置而不進行任何跳躍。
有誰知道是什麼原因造成的或如何解決它?
編輯:如果我在末尾添加換行符,PS1
問題似乎就消失了。但是,我更願意在提示符號所在的同一行輸入命令。
答案1
這通常是由歷史記錄中超過 1 行的命令引起的。當您從歷史記錄中選擇一個較短的項目時,它似乎沒有在重新呈現命令列時考慮提示的寬度,因此該長命令之後的所有內容都是奇怪的。
我發現的簡單解決方案是按主頁鍵,插入“echo”並按 Enter 鍵。然後調用最後一個命令並從那裡進行編輯。 (先消除迴聲。:)
另請參閱下面亞歷山大-索莫夫的回答,其中確定了解決此問題最常見原因的方法。
答案2
也許 PS1 中有非列印轉義序列,未包含在 \[ 和 \] 中。
確保您將所有這些都包含在內:
\[\e[33m\]\w\[\e[31m\] $ \[\e[0m\]