滚动 "too long" 命令无法正常工作
Scrolling "too long" command doesn't work properly
假设我想调用一个有很多选项的工具,例如:
$ somescript --option1 --option2 --option3 --option4 --option5 whatever even more stuff
但是终端的宽度不允许在“单行”上放置那个东西。
单独这不是问题,但是对于鱼,滚动有问题。
当我输入那个超宽命令时,在某个时候,会有一个换行符:
$ somescript --option1 --option2 --option3 --option4 --option5
whatever even more stuff
到目前为止一切正常。在输入如此冗长的命令时,我可以随时前后滚动。按预期工作。所以,假设我输入了命令,犯了错误,现在想删除 --option4.
正常情况:使用“向上箭头”找到历史记录中的那个命令,然后使用“向左箭头”在命令中滚动。现在奇怪的事情发生了。
当光标在第二行时一切正常。但是当光标移动到第一行时……再按 3 到 5 个“向左箭头”笔划后,光标向上移动另一行。然后它位于命令第一行上方。还有垂直几个字符的跳跃
换句话说:一旦命令长于终端的宽度,我就无法可靠地滚动到第一行。光标会出现在某处,而且任何时候都很难真正 猜测它的位置。这使得几乎不可能在第一行中编辑任何内容。
这是在 MacOs 上,使用通过 brew 安装的 iterm 3.2.9 和 fish 版本 3.0.2。
在 git 集线器上记录了缺陷 6014。结果相当令人沮丧。
问题是:Mac 终端都以错误的方式处理某些 unicode 字符。 "Normally" 这不是问题,但是当你使用那些给你 git 状态的鱼提示之一时(比如我最喜欢的 AcidHub
)......鱼不能compute/determine 确切的线宽,就这样。
所以,基本上,当在 MacOs 上使用 fish 时,选项 space 仅限于:
- 使用默认值(当使用特殊提示时,如
AcidHub
会导致滚动问题)
- 相应地调整鱼提示(在我的例子中,我用更简单的东西替换了所有特殊的 unicode 字符)。它看起来不太好,但滚动再次起作用。
还有一个完全不同且意想不到的问题解决方案:我在 Mac 上使用 iterm2,而 iterm2 刚刚添加了一个 "status bar" 部分。这可以很容易地配置,当然,它已经有一个状态栏组件,可以告诉你 git 状态。
因此我的解决方案:我将 fish 提示更改为仅提供 PWD,而 AcidHub 提示必须提供的所有其他内容现在都是 "iterm2 status bar" 组件!
假设我想调用一个有很多选项的工具,例如:
$ somescript --option1 --option2 --option3 --option4 --option5 whatever even more stuff
但是终端的宽度不允许在“单行”上放置那个东西。
单独这不是问题,但是对于鱼,滚动有问题。
当我输入那个超宽命令时,在某个时候,会有一个换行符:
$ somescript --option1 --option2 --option3 --option4 --option5
whatever even more stuff
到目前为止一切正常。在输入如此冗长的命令时,我可以随时前后滚动。按预期工作。所以,假设我输入了命令,犯了错误,现在想删除 --option4.
正常情况:使用“向上箭头”找到历史记录中的那个命令,然后使用“向左箭头”在命令中滚动。现在奇怪的事情发生了。
当光标在第二行时一切正常。但是当光标移动到第一行时……再按 3 到 5 个“向左箭头”笔划后,光标向上移动另一行。然后它位于命令第一行上方。还有垂直几个字符的跳跃
换句话说:一旦命令长于终端的宽度,我就无法可靠地滚动到第一行。光标会出现在某处,而且任何时候都很难真正 猜测它的位置。这使得几乎不可能在第一行中编辑任何内容。
这是在 MacOs 上,使用通过 brew 安装的 iterm 3.2.9 和 fish 版本 3.0.2。
在 git 集线器上记录了缺陷 6014。结果相当令人沮丧。
问题是:Mac 终端都以错误的方式处理某些 unicode 字符。 "Normally" 这不是问题,但是当你使用那些给你 git 状态的鱼提示之一时(比如我最喜欢的 AcidHub
)......鱼不能compute/determine 确切的线宽,就这样。
所以,基本上,当在 MacOs 上使用 fish 时,选项 space 仅限于:
- 使用默认值(当使用特殊提示时,如
AcidHub
会导致滚动问题) - 相应地调整鱼提示(在我的例子中,我用更简单的东西替换了所有特殊的 unicode 字符)。它看起来不太好,但滚动再次起作用。
还有一个完全不同且意想不到的问题解决方案:我在 Mac 上使用 iterm2,而 iterm2 刚刚添加了一个 "status bar" 部分。这可以很容易地配置,当然,它已经有一个状态栏组件,可以告诉你 git 状态。
因此我的解决方案:我将 fish 提示更改为仅提供 PWD,而 AcidHub 提示必须提供的所有其他内容现在都是 "iterm2 status bar" 组件!