【问题标题】:Best terminal environment for Cygwin/Windows?Cygwin/Windows 的最佳终端环境?
【发布时间】:2021-08-29 03:54:26
【问题描述】:

今天我使用以下启动行使用rxvt 运行 Cygwin:

rxvt -bg black -sl 8192 -fg white -sr -g 150x56 -fn "Fixedsys" -e /usr/bin/bash --login -i

这给了我一个可调整大小的原生 Windows 窗口,它比默认的 cygwin.bat 提供的标准“DOS 框”要好得多。

但是,当前的配置确实存在一些问题:

  1. 我无法在终端窗口中输入非 ASCII 字符(即 æ、ø、å 和 Æ、Ø、Å,我经常使用它们。事实上,当我使用它们时,终端甚至不会接受它们将它们粘贴到窗口中。如果我粘贴像“bølle”(挪威语中的“bulley”)这样的字符串,我得到的只是“blle”。
  2. 我无法渲染 UTF-8 字符,它们只显示为 ?,即使它们受字体支持(即在 ISO-8859-1 中渲染相同的字符时,它们显示得很好。)。李>

我正在运行英语 Windows Vista,语言环境和键盘布局设置为挪威语(ISO-8859-1 字符集?),但我在 Windows 2000 和 XP 上遇到了完全相同的问题。

任何人都知道如何解决这个问题(即配置 rxvt 的更好方法)?

除了上面提到的问题,我对rxvt 非常满意,所以如果我找到解决它们的方法,我想继续使用它。但是,如果问题不能(容易)解决,那么 Cygwin 是否还有其他好的终端解决方案?

更新

Andy 和 Mattias 提供的解决方案(编辑.inputrc 文件)确实解决了输入问题,但输出渲染仍然是一个问题。当我在 ISO-8859-1 中渲染时输出很好,但是当使用 UTF-8 时我只得到 ?对于非 ASCII 字符。这种行为在rxvturxvt(在 Cygwin XFree X 服务器下)、mintty 和 PuttyCyg 之间是一致的。

是否有类似的配置文件可以设置输出编码(即相当于在 Linux 系统上设置输出区域设置)?

【问题讨论】:

    标签: windows cygwin rxvt


    【解决方案1】:

    minTTY 也不错。您可以在 cygwin 的设置中找到它。支持调整大小、粘贴和透明度。

    【讨论】:

    • mintty 似乎与 rxvt 有完全相同的问题,这让我怀疑它与 Cygwin 或程序的启动方式有关(即未在环境中设置正确的语言环境或编码)和不是程序本身。
    • mintty 为我解决了这个问题,即使没有提到 .inputrc 更改。运行 Windows 7 x64。感谢您提及 mintty - 以前从未听说过,到目前为止看起来很棒。
    • 我从 rxvt 切换到 mintty,它解决了几个问题。很久以前,我不记得所有这些了,但 UTF-8 就是其中之一。
    • 1.2-beta1 开始,本机Windows 交互式控制台程序不能与mintty 一起工作(具体来说,它的流不会被isatty 检测为tty)。
    【解决方案2】:

    我目前正在使用 PuttyCyg (http://code.google.com/p/puttycyg/)。我不确定它是否包含您需要的修复程序,但它还有其他几个很酷的功能,例如存储到典型 putty 配置文件的配置,可以像这样调用:putty -load mycygwin1。这样的配置文件可以配置如下:

    • 将会话记录到文件中,
    • delete、home 和其他键的字符序列,
    • 窗口颜色和字体。

    编辑:可以输入您提到的字符。还提供了 UTF-8 支持(必须在配置中打开)。

    【讨论】:

    • +1 代表 PuTTYCyg。如果您已经定期使用 PuTTY 连接到远程计算机,这很有用。
    • 有关如何将 PuttyCyg 导入 Cygwin 的完整说明列表以及相关说明和配置文件,请参见 effective-cygwin GitHub 页面。
    【解决方案3】:

    将以下两行添加到 readline 配置文件 ~/.inputrc

    set convert-meta off
    set output-meta on
    

    应该可以在 rxvt 和 mintty 中使用。更多内容:

    http://www.gnu.org/software/bash/manual/bashref.html#Readline-Init-File-Syntax

    【讨论】:

    • 谢谢,这解决了输入问题,但输出仍然错误(?而不是非ASCII字符)。
    • 'echo' 或 'cat' 的输出应该没问题。在 vi 或 nano 中编辑也应该没问题。但我猜你的意思是例如来自 ls 的输出,其中文件名带有问号?恐怕我不知道如何解决这个问题。 (Cygwin 1.7 有一些 Unicode 支持;我想这会有所帮助。)
    • 实际上,我正在考虑我知道以 utf-8 输出到标准输出的程序(即我自己编写的程序)。也许是因为 Cygwin 还没有真正支持 utf-8?
    • MinTTY 使用 UTF-8。 (您必须在代码页设置中激活它。)xterm 和 rxvt-unicode 也这样做。
    【解决方案4】:

    我也在使用Console。控制台允许您自定义字体、背景等,并且还有一个选项卡式界面(如果您同时使用多个终端窗口,那就太好了)。

    为了能够使用非 ASCII 字符,我在我的主目录中的 .inputrc 文件中添加了以下内容:

    set meta-flag on
    set convert-meta off
    set output-meta on
    set completion-ignore-case on
    

    【讨论】:

      【解决方案5】:

      在撰写本文时,已经 4 岁了,问题的核心已经消失:默认的 Cygwin 终端现在可以不经形式地粘贴和渲染非 Ascii 字符,至少对我来说是这样。 Cygwin 的默认终端现在是 mintty 并且 Cygwin 现在默认使用 UTF-8 运行。 (例如,/etc/profile.d/lang.sh 现在默认设置 UTF-8 字符集编码。)现在有 64 位版本的 Cygwin,但根据 http://www.cygwin.com/ml/cygwin/2013-09/msg00029.html,没有 rxvt 的 64 位端口。

      即使是标题中的问题也没有以前那么重要了,因为 mintty 不像旧的 Windows 命令控制台子系统窗口那样令人讨厌。不过,我将插入我共同维护的项目:https://github.com/software-jessies-org/jessies/wiki/Terminator,它是为 UTF-8 编写的,可能从第一天开始,虽然它的主要卖点 imo 是查找功能。

      【讨论】:

        【解决方案6】:

        您可能需要设置代码页。

        检查你的当前:

        $ set | grep CYGWIN
        CYGWIN='codepage:oem nodosfilewarning'
        

        如果您没有代码页,则添加到您的 ~/.bashrc 文件中:

        CYGWIN='codepage:oem nodosfilewarning'
        

        我的 Cygwin 批处理 (Cygwin.bat) 文件的内容(由快捷方式启动)是:

        start C:\cygwin\bin\rxvt.exe -sb -sl 3000 -fg gray -bg black -fn "Lucida Console-14" -e /bin/bash --login -i
        

        请注意,对于 CYGWIN 环境变量,您可以有多个项目,每个项目以空格分隔。其他可以使用的项目:{ tty binmode title }。

        更多信息可以在这里阅读: http://www.cygwin.com/cygwin-ug-net/setup-env.html

        相关说明:您也可以将 mrxvt 用于 Cygwin。它需要一个 X 服务器,一个不错的可靠/轻量级解决方案是使用 Xming。我编译并安装了 mrxvt - 并不难,而且效果很好。

        我使用 rxvt 作为初始窗口,然后使用别名命令将 mrxvt 作为与 rxvt 分开的进程启动,然后关闭 rxvt。这使得 mrxvt 成为自己的父进程,并且没有附加任何 cmd 会话。

        我为此做了一个别名:

        alias mrx='export DISPLAY="127.0.0.1:0.0"; $(/usr/local/bin/mrxvt &); echo -e "\033c"'
        

        为方便起见,我创建了一个批处理文件来启动 Xming 和 rxvt:

        @echo off
        start C:\cygwin\bin\rxvt.exe -sb -sl 3000 -fg gray -bg black -fn "Lucida Console-14" -e /bin/bash --login -i
        start C:\Xming\Xming.exe :0 -clipboard -multiwindow -trayicon
        exit
        

        此批处理文件由 Windows 快捷方式启动。这对我来说效果很好。

        【讨论】:

          【解决方案7】:

          我一直在使用Console,它与 Cygwin(以及 PowerShell 和普通的旧 cmd.exe)配合得很好。

          【讨论】:

            【解决方案8】:

            当我在 Windows 上进行开发时,我发现 Poderosa 是 Cygwin 的不错选择。

            【讨论】:

              【解决方案9】:

              带有 xterm 的标准 Cygwin/X 对我来说已经足够了。安装 Cygwin X.org 包,然后运行脚本C:\cygwin\bin\startxwin.bat(假设默认安装路径)。它会启动 X,然后是 xterm。

              我用这些选项更新了我的.Xdefaults 以获得更好的可用性:

              *VT100*scrollbar.width:         14
              *VT100*scrollbar.background:    gray60
              *VT100*scrollbar.foreground:    rgb:a/5/5
              *VT100*scrollbar.borderWidth:   0
              *VT100*scrollbar.displayList:\
              foreground      gray90;\
              lines           1,-1,-1,-1,-1,1;\
              foreground      gray60;\
              lines           -1,1,1,1,1,-1
              *VT100*rightScrollBar: true
              *VT100*scrollBar: true
              *VT100*scrollLines: 1000
              xterm*toolBar: false
              

              【讨论】:

                【解决方案10】:

                我会在 Windows 中设置您的国家(控制面板 -> 区域设置 -> 最后一个选项卡(控制)-> unicode 不兼容语言的语言 -> 您的选择(挪威语))。重启后开始 Start->Cyqwin->rxvt-native。对于俄语,它可以工作(无需编辑 .bashrc 或其他任何内容)。

                它甚至(我猜)将软件的输出转换为 utf-8,因为默认编码是 C.UTF-8。要检查它,请键入“echo $LANG”。

                【讨论】:

                  【解决方案11】:

                  关于 cygwin 的替代终端仿真器主题 - 查看Console2;它具有您需要的所有功能。

                  【讨论】:

                    【解决方案12】:

                    如果您使用带有某些 arg 的 ls,它会显示文件名 OK 我建议你在 /etc/profile 中添加一个 ls 别名:

                    alias ls='ls -F --color=auto --show-control-chars'

                    在 WinXP 上的 msys 中为我工作。

                    【讨论】:

                      【解决方案13】:

                      rxvt 不支持 unicode,因此如果您登录使用 UTF-8 进行编码的机器,则无法使其正常工作。您可以将 rxvt 用于 iso-8859-1/15,但现在大多数机器都是 UTF-8。

                      Cygwin中rxvt的unicode替换为urxvt,Cygwin下的包名是rxvt-unicode-X。 urxvt 还有其他不错的功能,例如许多可下载的插件——包括一个为每个窗口提供多个选项卡的插件,以及一个客户端/服务器架构,如果你有很多窗口,它会使用更少的资源 (urxvtc/urxvtd )。

                      您可能还需要确保您的 readline 变量指定您的 shell 应该通过 8 位字符,即将它添加到您的 $HOME/.bashrc$HOME/.profile

                      关闭转换元 设置输出元 设置输入元

                      您必须在$HOME/.Xdefaults 中设置正确的资源:特别是您需要一种具有所需字符的字体。 urxvt 的资源组名称是URxvt注意大写,这很重要!

                      URxvt.font: xft:Lucida Console:size=8:style=normal:weight=50:antialias=true:hinting=true:minspace=true URxvt.boldFont: xft:Lucida Console:size=8:style=bold:weight=100:antialias=true:hinting=true:minspace=true

                      我也推荐设置:

                      URxvt*termName: xterm

                      此资源决定$TERM 环境变量的值。除非设置正确,否则无法找到正确的 termcap 文件,从而导致像 less 这样的程序发出以下样式的警告:WARNING: terminal is not fully functional。不幸的是,rxvt-unicode 的默认 termName 在许多 Linux 发行版中并不为人所知,因此如果您经常 ssh 到远程机器,就会遇到问题。解决方案是将termName 设置为更常见的值(例如xterm),或者将rxvt-unicode 的termcap 文件上传到您登录的所有服务器。

                      【讨论】:

                      • 我们可以从哪里获得 urxvt? cygwin 安装程序似乎无法使用它。
                      • 它在 rxvt-unicode-X 和 rxvt-unicode-common 包下可用。
                      • 问题的更新是评论说即使在urxvt下,他们仍然得到'?对于 UTF-8 字符。重要的一点是要使用真正有需要的字符的字体,但是.Xdefaults下的资源名称有点挑剔:使用资源名称是错误的:“Urxvt.*”正确的资源名称是:“URxvt .*" 区别仅在于大小写,在我弄明白之前,它让我困惑了很长一段时间。
                      【解决方案14】:

                      由于标题具有某种误导性,并且搜索结果多次将我带到这里,所以我将回答阅读标题。

                      我喜欢在 Windows 上使用 Babun 作为 Cygwin 环境,这对我来说几乎是完美的。

                      【讨论】:

                        【解决方案15】:

                        请试试 ConEmu,它是一个带有选项卡的开源控制台模拟器,它将多个控制台和简单的 GUI 应用程序表示为一个可自定义的 GUI 窗口。

                        https://conemu.github.io/

                        【讨论】:

                          【解决方案16】:

                          xfce4-terminal(可从 Cygwin setup.exe 获得)对我来说是最好的,因为它看起来很棒(易于阅读)并且如果从 XLaunch 开始(也可从 setup.exe 获得),我可以从中启动其他 cygwin GUI 应用程序。出于某种原因,我无法从mintty 启动GUI 应用程序。我发现这个线程正在寻找一个比xterm 更丑的终端(它适用于启动 GUI 应用程序)。最后,我通过在 setup.exe 中的终端上搜索找到了最好的(xfce4-terminal)。 xfce4-terminal 7 多年来一直是我在 Linux 上的最爱之一。

                          Guake 也可以在setup.exe 中使用,但我必须从另一个终端启动它并单击另一个终端,然后才能使用击键来关闭 Guake。所以,这不像在 Linux 上那么实用。

                          【讨论】:

                            【解决方案17】:

                            与 emg-2 类似,Lifehacker 最近有一篇关于 MinTTY 的文章,不确定它是否包含您需要的修复。

                            【讨论】:

                              【解决方案18】:

                              如果您只满足于运行 Cygwin 应用程序,那么 rxvt 应该可以正常工作。 Rxvt 应该支持 UTF-8。您是否尝试在谷歌上搜索解决方案?

                              如果您还需要运行本机 Windows 应用程序,那么除非您在 Windows 控制台中运行 bash,否则您就不走运了。有两个问题我认为没有(甚至可以)解决:

                              • Ctrl-C 不能正常工作。如果您从 rxvt(或 xterm)内部运行本机 Windows 应用程序,按 Ctrl-C 会返回提示,但不会中断程序,通常会使其在后台运行。
                              • 终端输出缓冲不起作用。本机 Windows 应用程序的输出不会在打印时显示,而是在某些内部缓冲区已满时显示。

                              这两个问题对于我尝试过的所有终端仿真器(rxvt、xterm、Emacs 和其他一些)都是相同的。

                              【讨论】:

                              • Cygwin 存储库中有一个 rxvt-unicode 包,但它需要 X 服务器,我希望避免使用。
                              【解决方案19】:

                              除了完全可调整大小之外,rxvt 还为您提供了哪些 Windows 控制台窗口没有的功能?您是否查看过内存使用量的差异 - rxvt 是一头猪。我使用 rxvt 几个星期,然后切换回 Windows 控制台窗口,没有遗憾。

                              【讨论】:

                              • rxvt(显然还有 mintty)在登录远程 ssh 会话(通过 openssh)时会在终端中给我颜色,而将 bash.exe 作为“DOS 程序”运行则不会。我也喜欢复制过去的能力,只需标记它并使用鼠标滚轮或鼠标中键粘贴文本。
                              • 一般来说,终端仿真(通过 ssh)在“真实”终端中效果更好,而不仅仅是使用 bash.exe(如果我没记错的话,bash.exe 方法在某些快捷键上也有问题和使用远程会话时的字符序列)。
                              • 控制台在复制粘贴方面很糟糕。 “真正的”终端不需要右键单击,选择复制并按回车即可复制内容。控制台中最大的问题。还会影响 powershell,使其使用起来很痛苦。
                              • “除了完全可调整大小”有点像“除此之外,林肯夫人,这部戏怎么样?”
                              【解决方案20】:

                              是的,mintty 看起来更舒服,轻快,但有一个特性它没有,而默认(windows)控制台有,那就是搜索功能: 从默认控制台,你可以搜索显示的字符串在控制台上,好玩吗?

                              到目前为止,我还没有发现任何其他控制台具有此功能...我知道,告诉我,我真的不喜欢默认控制台。

                              【讨论】:

                                【解决方案21】:

                                我用过几个终端,比如putty、console、rxvt、mintty、teraterm。 最好的是teraterm。 它是免费的,完全兼容 lang 和 tty,完全可配置宏、快捷方式,并为 Cygwin 提供 cygterm。

                                但是,如果您是轻用户,只需使用 mintty 或 rxvt 即可,这是目前的默认术语。

                                【讨论】:

                                  猜你喜欢
                                  • 2019-09-29
                                  • 2020-10-15
                                  • 2012-07-07
                                  • 1970-01-01
                                  • 2016-08-26
                                  • 2011-03-07
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 2012-02-14
                                  相关资源
                                  最近更新 更多