为什么 CTRL-r 在 OS X 上表现得很奇怪(只显示命令的一部分)

bry*_*edy 10 bash terminal mac-osx

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,整个命令都在那里,我可以使用光标键在行上移动,但不是全部它被打印出来。线上显示的内容与终端实际认为我正在编辑的内容之间存在脱节。

有谁知道为什么会发生这种情况?在网上搜索这不是一个容易的现象。

Den*_*son 14

您的提示中的颜色可能有未正确分隔的转义序列。它们需要包含在\[和 中\]

PS1='\[\033[1;36m\]\u\[\033[0m\]@\[\033[1;34m\]\h\[\033[0m\]\$ `
Run Code Online (Sandbox Code Playgroud)

非打印字符序列的长度不包括在提示的长度中,因此它们被包围时,需要计算前面命令的位置,以便在它们换行时正确显示。