Bash

為什麼 CTRL-r 在 OS X 上的行為怪異(僅顯示命令的一部分)

  • April 26, 2018

Ctrl+r是一個很棒的小工具,用於搜尋您.bash_history以前執行的命令。

然而,當我在我的 OS X Terminal.app 中使用它時,我看到了奇怪的行為,我想知道是否有其他人看到同樣的事情或知道如何修復它。

  1. Ctrl+r
  2. 輸入類似的東西find
  3. 哦,酷,看……這是我想要的命令find . -exec grep -q "hello world" '{}' \; -print
  4. 我想執行該命令,但將 hello world 更改為其他內容。
  5. 所以我打
  6. 現在命令在命令行上是 SORTA,但它總是看起來像命令的某個截斷版本,像這樣:-q "blog_posts_by" '{}' \; -print,整個命令都在那裡,我可以使用游標鍵在行上移動,但不是全部它被列印出來。行上顯示的內容與終端實際認為我正在編輯的內容之間存在脫節。

有誰知道為什麼會發生這種情況?在網上搜尋並不是一件容易的事。

您的提示中可能有未正確分隔的顏色的轉義序列。它們需要包含在\[和中\]

PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ `

非列印字元序列的長度不包含在提示符的長度中,當它們被包圍時,需要計算先前命令的位置以便在它們換行時正確顯示。

這可能是由於在終端上配置轉義鍵的方式,我通常做的是使用 iTerm 或 Terminal.app 上的左箭頭或右箭頭,因為我不喜歡立即返回,這對你有用嗎?

引用自:https://serverfault.com/questions/224306