【问题标题】:Seething over MSYS shell - is it replaceable?在 MSYS shell 上沸腾 - 它可以更换吗?
【发布时间】:2010-09-18 06:09:52
【问题描述】:

我需要一个可维护的 MSYS 外壳。这是我目前的困境:

默认的 rxvt.exe 具有滚动条和复制粘贴功能,但不会将控制字符或箭头键发送到 shell 中正在运行的程序(如解释器/调试器)。在使用 Haskell 解释器 ghci 时,这是一个真正的难题。

另一个 shell sh.exe 处理控制字符(或至少其中一些),但没有滚动条或复制和粘贴。

rxvt 也有(相对)更多的输出缓冲问题

我有哪些选择?替换外壳是否需要 msys 感知?我想要的只是一个健全的环境,可以使用 Haskell (ghc)、C++ (gcc) 和基本工具链(make 和 what not)。如果不涉及疯狂的恶作剧,我愿意编译一个 shell。

【问题讨论】:

  • 我用的是cygwin的rxvt副本,没注意到这些问题。至少不使用更普通的 shell=control 键,例如 等。您是否使用其他东西?你可以尝试在 cygwin 中使用 MinGW 吗?
  • 我应该更正一下 rxvt 确实发送了一些东西,它只是与 GHCi 不兼容。例如箭头键插入隐藏的 '\ESC' 字符(破坏您的任何输入)而不是它们通常的功能。 Ctrl-C 也有问题,甚至还有一个包装程序 ghcii.sh 来处理这个问题。

标签: shell haskell msys rxvt


【解决方案1】:

您混淆了“shell”和“终端模拟器”。 sh.exe 是前者; rxvt 是后者。 (请注意,在 Windows 下,您可以不使用终端模拟器,因为 Windows 会为任何尚未在其中运行的控制台程序(例如 sh.exe)创建一个(“控制台窗口”)

【讨论】:

    【解决方案2】:

    如果您想要更好的终端模拟器,我已经成功使用 http://sourceforge.net/projects/console/

    它是标准 windows 命令窗口的替代品。你可以设置 MSYS 或 Cygwin,或者任何你想要的作为支持它的 shell。

    【讨论】:

    • 对于那些像我一样正在努力让 sh.exe 在控制台中工作的人:将 'C:/MinGW/MSYS/1.0/bin/sh.exe --login -i' 设置为您在控制台设置中的 shell。
    【解决方案3】:

    我没有使用过 msys 的东西,但是使用 rxvt 以外的东西并在其中运行 sh.exe 应该就足够了。现在,如果您使用控制字符,您可能需要确保您使用的任何内容都支持您需要的内容(即 vt100 仿真)。

    一种方法可能是使用 cygwin。我通常使用无根 X 服务器运行 cygwin,并在其上运行 xterm。到目前为止,它一直非常好,而且我没有遇到很多问题。我知道箭头键和这样的工作很好。

    【讨论】:

      【解决方案4】:

      检查http://code.google.com/p/mintty/。那个怎么样?我觉得它绝对有用。还是 puttycyg(较早的尝试)?

      【讨论】:

        【解决方案5】:

        帮自己一个忙,使用正确的 Cygwin,而不是旧 Cygwin 版本的未维护分支,即 msys。

        【讨论】:

          【解决方案6】:

          从 msys shell:

          mingw-get install mintty
          mintty
          

          【讨论】:

          • 薄荷看起来很棒。刚刚安装了它,它看起来就像 cygwin shell。
          【解决方案7】:

          使用 PowerShell 而不是旧的 cmd。然后像这样运行 sh

          C:\msys64\usr\bin\sh.exe --login -i
          

          我在带有 MSYS2 和 Haskell 平台 2014.2.0.0 的 Winows 8.1 上进行了测试。使用 GHCi 没有问题。所有箭头键和其他键都按预期工作。

          另外,我无法按照其他答案中的建议让 Console2 在 Windows8 上正常工作。

          【讨论】:

            【解决方案8】:

            这个问题有点过时了; mintty 现在默认包含在 MSYS2 中。具有讽刺意味的是,我无法访问 GHCi 中的命令历史记录——按下会移动光标,并将 \ESC 代码放在输入缓冲区中——这已通过 removing @ 987654323@(来自 MSYS2 shell 的pacman -R mintty)。

            【讨论】:

              猜你喜欢
              • 2016-05-10
              • 2014-04-27
              • 2014-01-31
              • 2011-08-10
              • 2016-05-04
              • 2011-06-22
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多