Cygwin/Windows最佳终端环境是什么?

53

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

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

这样可以给我一个可调整大小的本地Windows窗口,比默认的cygwin.bat提供的标准“DOS Box”好得多。

然而,当前的配置确实存在一些问题:

  1. 我无法在终端窗口中输入非ASCII字符(即æ,ø,å和Æ,Ø,Å),它们仅在ISO-8859-1字符集下正常显示。事实上,即使将它们粘贴到窗口中,终端也无法接受它们。如果我粘贴像“bølle”(挪威语中的“bulley”)这样的字符串,我只会得到“blle”。
  2. 我无法呈现UTF-8字符,它们只会显示为?,即使字体支持它们。

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

有人知道如何解决这个问题(即更好的配置rxvt)吗?

除了上述问题,我对rxvt非常满意,所以如果我找到一种解决方法,我想继续使用它。但是,如果这些问题不容易解决,是否有其他好的Cygwin终端解决方案?

更新

Andy和Mattias提供的解决方案(编辑.inputrc文件)确实解决了输入问题,但输出渲染仍然存在问题。当我使用ISO-8859-1进行渲染时,输出很好,但是当使用UTF-8时,非ASCII字符只显示为问号。这种行为在rxvturxvt(在Cygwin XFree X Server下)、mintty和PuttyCyg之间保持一致。

是否有类似的配置文件可以设置输出编码(即在Linux系统上设置输出语言环境的等效方法)?

21个回答

37

minTTY也相当不错。您可以在cygwin的安装中找到它。它支持调整大小,粘贴和透明度。


mintty似乎有与rxvt完全相同的问题,这让我怀疑它与Cygwin或程序启动方式有关(即在环境中未设置正确的区域设置或编码),而不是程序本身。 - Anders Sandvig
3
即使没有提到的.inputrc更改,Mintty也已经为我解决了这个问题。我使用的是Windows 7 x64操作系统。感谢提到Mintty——我之前从未听说过它,到目前为止它看起来很棒。 - pho79
2
我从rxvt切换到了mintty,解决了一些问题。这已经是很久以前的事情了,我不记得所有的问题,但其中一个是UTF-8。 - Traveler
截至1.2-beta1版本,本地Windows交互式控制台程序无法与mintty一起使用(具体来说,它的流不会被检测为带有isatty的tty)。 - ivan_pozdeev

12

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

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

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


对于使用PuTTY定期连接到远程机器的人来说,PuTTYCyg非常有用。 - Burhan Ali
关于如何将PuttyCyg嵌入您的Cygwin并获取相关说明、配置文件等完整列表,请参阅effective-cygwin GitHub页面。 - alexgophermix

10

谢谢,那解决了输入问题,但输出仍然有误(显示问号而不是非ASCII字符)。 - Anders Sandvig
从“echo”或“cat”的输出应该很好。在vi或nano中进行编辑也可以。但我想你的意思是例如ls的输出,其中文件名带有问号?恐怕我不知道如何修复它。(Cygwin 1.7具有一些Unicode支持;我想那会有所帮助。) - Andy
其实,我在考虑那些输出到标准输出的UTF-8编码程序(比如我自己写的)。也许这是因为Cygwin还不完全支持UTF-8编码? - Anders Sandvig
1
MinTTY支持UTF-8编码(你需要在代码页设置中激活它)。xterm和rxvt-unicode也支持UTF-8编码。 - Andy

8

在撰写本文时,已经过去了四年,这个问题的实质已经不存在了: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所述,没有64位的rxvt版本。

即使标题中的问题不再像以前那样重要,因为mintty不会像旧版Windows命令控制台子系统窗口那样让人费解。不过,我要推荐我共同维护的项目:https://github.com/software-jessies-org/jessies/wiki/Terminator,它一开始就是为UTF-8编写的,虽然我认为它的主要卖点是查找功能。


8
我也在使用 Console。它可以让你自定义字体、背景等,还有一个选项卡式界面(如果你同时使用多个终端窗口会很方便)。
为了能够使用非ASCII字符,我在我的主目录下的.inputrc文件中添加了以下内容:
set meta-flag on
set convert-meta off
set output-meta on
set completion-ignore-case on

3
你可能需要设置代码页。
检查当前的:
$ set | grep CYGWIN
CYGWIN='codepage:oem nodosfilewarning'

如果您没有代码页,则需要将以下内容添加到您的~/.bashrc文件中:
CYGWIN='codepage:oem nodosfilewarning'

我Cywin批处理文件(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 相关说明:您还可以在Cygwin中使用mrxvt。它需要一个X服务器,一个不错的坚实/轻量级解决方案是使用Xming。我编译并安装了mrxvt - 这并不难做到,并且运行得很好。
我使用rxvt作为初始窗口,然后通过使用别名命令从rxvt启动mrxvt作为单独的进程,然后关闭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快捷方式启动的。对我来说效果很好。

2

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


2

在Windows上开发时,我发现Poderosa是Cygwin的一个不错选择。


1

如果您使用带有某些参数的ls命令,它会显示文件名,没问题。

我建议您在/etc/profile中设置一个ls别名:

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

在WinXP上的msys中对我有效。


1
请尝试使用ConEmu,它是一个开源的控制台仿真器,具有选项卡功能,可以将多个控制台和简单GUI应用程序表示为一个可自定义的GUI窗口。

https://conemu.github.io/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接