假设我想调用一个具有很多选项的工具,例如:
$ 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。
我输入了这么长的命令 -当我按“向上箭头”时,鱼向我显示了超长命令,一切正常 -当我知道逐个字符按“向左箭头”时,光标后的几个键会中断
答案 0 :(得分:0)
在github上编写缺陷6014。结果相当令人沮丧。
问题是:Mac终端均以错误的方式处理某些unicode字符。 “通常”是没有问题的,但是当您使用其中一个为您提供git状态的鱼提示时(例如AcidHub
,这是我的最爱)...鱼无法计算/确定确切的行宽度,然后您就可以走了。
因此,基本上,在MacO上使用fish时,选项空间仅限于:
AcidHub
之类的特殊提示时,会导致滚动问题)和一个完全不同且出乎意料的解决方案:我在Mac上使用iterm2,而iterm2刚刚添加了“状态栏”部分。可以轻松配置它,当然,它已经具有一个状态栏组件,可以告诉您有关git status的信息。
因此,我的解决方案:我将fish提示符更改为仅提供PWD,而AcidHub提示符必须提供的所有其他内容现在都是“ iterm2状态栏”组件!