滚动“太长”命令无法正常工作

时间:2019-06-24 13:12:57

标签: fish

假设我想调用一个具有很多选项的工具,例如:

$ somescript --option1 --option2 --option3 --option4 --option5 whatever even more stuff

但是终端的宽度不允许将其放在“单行”上。

这本身不是问题,但是对于鱼来说,滚动存在问题。

当我输入该超宽命令时,有时会出现换行符:

  

$ somescript --option1 --option2 --option3 --option4 --option5

     

更多东西

到目前为止一切都很好。在键入这样一个冗长的命令时,我可以在任何时候来回滚动。可以正常工作。因此,假设我输入了命令,犯了一个错误,现在想删除--option4。

正常的事情:使用“向上箭头”进入历史记录中的命令,然后使用“向左箭头”在命令中滚动。现在发生了一些奇怪的事情。

当光标位于第二行内时,一切都很好。但是,当光标移至第一行时...在经过3至5个“向左箭头”笔划之后,光标会向上移至另一行。然后,它位于命令的第一行上方。还有几个字符的垂直跳转。

换句话说:一旦命令的长度超过终端的宽度,我将无法可靠地滚动到第一行。光标出现在某处,真的很难猜测真正何时位于何处。这几乎不可能在第一行中编辑任何内容。

这是在MacO上,使用iterm 3.2.9和通过brew安装的fish版本3.0.2。

我输入了这么长的命令 -当我按“向上箭头”时,鱼向我显示了超长命令,一切正常 -当我知道逐个字符按“向左箭头”时,光标后的几个键会中断

1 个答案:

答案 0 :(得分:0)

在github上编写缺陷6014。结果相当令人沮丧。

问题是:Mac终端均以错误的方式处理某些unicode字符。 “通常”是没有问题的,但是当您使用其中一个为您提供git状态的鱼提示时(例如AcidHub,这是我的最爱)...鱼无法计算/确定确切的行宽度,然后您就可以走了。

因此,基本上,在MacO上使用fish时,选项空间仅限于:

  • 使用默认值(使用AcidHub之类的特殊提示时,会导致滚动问题)
  • 相应地调整fish提示(在我的情况下,我用更简单的替换了所有特殊的Unicode字符)。看起来并不好,但是滚动再次可以正常工作。

和一个完全不同且出乎意料的解决方案:我在Mac上使用iterm2,而iterm2刚刚添加了“状态栏”部分。可以轻松配置它,当然,它已经具有一个状态栏组件,可以告诉您有关git status的信息。

因此,我的解决方案:我将fish提示符更改为仅提供PWD,而AcidHub提示符必须提供的所有其他内容现在都是“ iterm2状态栏”组件!