【问题标题】:Line wrapping in cygwin prompt?在cygwin提示符下换行?
【发布时间】:2020-11-30 17:40:17
【问题描述】:

我查看了重复的问题。没有任何效果。

我使用 Gitbash,当使用 Cygwin 时,我使用 gitbash 提示符 (/Git/etc/bash.bashrc) 来显示相同​​的提示符。在 Gitbash 中,提示有效。在 cygwin 中,输出行换行。例如:

[ "$python_version" ] && python_version='\[\033[95;38;5;227m\]????'"${python_version##* } "

此行在附加到 PS1 时会导致换行(仅在 cygwin 中)。 minttyrc 和颜色设置完全相同。去除我认为是问题的颜色,修复了包装。但是,我相信一切都被正确地转义了,并且由于它没有包含在 gitbash 中,我不知道问题是什么。

这里的颜色似乎是问题,因为删除它可以解决问题。但为什么?终端有什么不同?我也想知道这是否可能是提早逃生的问题,但 PyCharm 的 shellcheck 说一切都很好。

包装示例:

赛格温: ⬢14.7.0p/new ????3.8.3 (venv) ❯

GitBash(理想输出): ~/Desktop/new ????3.8.3 ⬢14.7.0 (venv) ❯

它只出现在提示符中(PS1 变量,又名PROMPT_COMMAND);不是在终端中实际输入命令时。

【问题讨论】:

  • 可能是 eol 问题? (stackoverflow.com/a/39091313/6309)
  • 对不起,我不太明白。那我怎么可能修复它呢?我还听说 cygwin 本身存在一些错误,并且有几个人建议不要使用它。
  • 不确定,考虑到我不使用 Cygwin。我通常觉得 git bash 足够了。在您的情况下,您需要 Cygwin 提供什么?
  • 某些工具,例如 g++ 和使用 ssh(如果我错了请告诉我)需要 cygwin。我了解到我可以通过 ssh 使用 bash 和 ssh -t user@host "bash -l";但是,这总是最终使用 cygwin 中的 PS1 集,我认为没有解决方案;所以我最终只是为 gitbash 复制了我的 PS1 文件,现在当我 ssh 进入时出现换行错误。
  • 这些确实是使用 Cygwin 的正当理由(使用符合 POSIX 的外壳)。换行是指superuser.com/q/283236/141

标签: bash cygwin git-bash


【解决方案1】:

答案:Cygwin 是垃圾(请原谅夸张)。它有这么多实用程序,但很多人都遇到过这样的错误,这真是太可惜了。我卸载了它,从 PATH 中删除了它的变量,并添加了 C:\Program Files\Git\bin,我现在可以使用 ssh -t user@host bin "bash -l" 进行 ssh。这给了我一个正确的提示,无论是否使用 ssh,没有包装;我能够使用 MinGW 安装其他实用程序,例如 g++。我希望 Cygwin 能尽快解决问题,因为我已经调试了各种方式;没改代码,卸载了,然后就成功输出了。

【讨论】:

  • 这也是我的第一个答案。正如我所评论的,我通常在没有 Cygwin 的情况下管理。
  • 混合实用程序是您的问题,而不是 Cygwin 的问题。 Cygwin默认不修改PATH,所以你自己做
  • 我不知道你为什么这么说;在任何时候,如果我打开 Mintty,它就会换行,这就是问题所在,无论路径如何; Mintty 总是用线包裹,无论是否插入。代码本身很好,而 Cygwin 仍然有错误。是的,我不应该改变我所做的路径,但是 Cygwin 仍然有我无法控制的错误。
猜你喜欢
  • 2017-01-09
  • 1970-01-01
  • 1970-01-01
  • 2013-04-03
  • 1970-01-01
  • 2015-07-07
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
相关资源
最近更新 更多