为什么CTRL-r在OS X上表现异常(仅显示命令的一部分)


10

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

有人知道为什么会发生这种情况吗?在网络上搜索并非易事。


这只会发生在比您的术语窗口宽度更长的行上吗?
2011年

您正在运行哪个版本的Terminal.App/OSX?Bash版本?您也可以向我们展示您的.bashrc吗?
2011年

Answers:


14

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

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

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


OK,我有几个问题比较多,这是由回答者在这个StackOverflow的线程解决- stackoverflow.com/questions/35563/...
布赖恩·肯尼迪

这也适用提示中的换行符。我删除了一个hicolor控制序列,因为它在的开头PS1,但在其中的换行符之后不再出现。
2016年

0

这可能是由于在终端上配置了转义键的方式所致,我通常会在iTerm或Terminal.app上使用向左或向右箭头,因为我不喜欢立即按回车键,因此对您有用吗?


0

此问题的另一个可能原因是TERM值有误。例如,当我在PS1中使用颜色时,这发生在我身上,但是我TERM设置为xterm。我将其更改为xterm-256color,然后CTRL-r重新开始正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.