【问题标题】:Why does ksh's vi-mode in Terminal on macOS "Big Sur" sometimes corrupts the edit line?为什么 macOS “Big Sur” 上终端中的 ksh 的 vi 模式有时会损坏编辑行?
【发布时间】:2021-08-04 17:30:27
【问题描述】:

我注意到,有时在尝试编辑历史记录中的一行以重新运行命令时,ksh 会使该行出现乱码并将光标向上移动一行。这真的很奇怪。

  • 首先发现只是排长队出现问题
  • 调试,发现COLUMNS变量未设置(很确定Terminal用来设置)

我可以手动将它设置为一个大数字,但随后出现了其他问题。

我找不到任何方法来强制终端在窗口调整大小时更新 COLUMNS 值 - 我该怎么做?

【问题讨论】:

  • 您仍然使用 ksh 与 bash/zsh ... 有什么特别的原因吗?
  • @Philippe 二。 Korn 写了一本关于他的 shell 各个方面的详细书籍,我仍然出于各种原因参考它。其次,它上线后不久我就开始在贝尔实验室使用它,并且实际上有机会与他互动。我已经在 Mac 上使用它 20 年了,没有理由切换。如果我要切换,我可能会尝试像 Fish 这样的新 shell。

标签: macos terminal ksh


【解决方案1】:

这让我花了很长时间去追踪和修复。 ksh 将在运行任何命令之前运行.env 文件,因此这是您可以设置值的钩子,假设您可以找到该值。

高低搜索后,我发现stay 会输出当前的行和列,但是这些值隐藏在其他信息的大负载中。然后我使用了resize 选项,它只是将行和列输出为两个数字。

通过过滤输出,可以只得到列号。解决方案是将其添加到 .env 文件中,并确保在您的 .profile 中设置了 ENV

COLUMNS=$(stty size | sed -e 's/[0-9]* \([0-9]\)/\1/')

【讨论】:

  • COLUMNS=$(tput cols) 会更简单/更快吗?
猜你喜欢
  • 2021-07-25
  • 1970-01-01
  • 2021-12-23
  • 2022-01-09
  • 2021-03-29
  • 2022-01-14
  • 2021-12-04
  • 2023-04-03
  • 1970-01-01
相关资源
最近更新 更多