一个遵循ANSI颜色代码的Eclipse控制台视图?

83

ScalaTest的输出被着色以区分不同的状态,但最终它们变成了控制代码和

[34m Annoying garbage 

有没有办法说服Eclipse控制台要么尊重要么忽略这些序列,或者插入一个视图来解决这个问题?

6个回答

108
我已经成功地在Eclipse中使用了这个插件——ANSIConsole


1
非常好。运行得很顺畅,而且使用的是常规的Eclipse控制台。比被接受的答案要容易得多。 - Damien
这个在ncurses中不起作用的原因在网站上已经提到:“由于此插件钩入了LineStyleListener,因此它除了更改当前输出的样式之外,无法执行任何其他操作。因此不能进行光标移动、清屏等操作。” - krispy
它在多行日志条目(仅第一行具有颜色代码)方面存在烦人的问题:https://github.com/mihnita/ansi-econsole/issues/3 - Vsevolod Golovanov
这个插件有点慢,有没有更快的替代品? - v.tralala
1
这似乎无法与jansi库一起使用。 添加System.setProperty("jansi.passthrough", "true");以使其正常工作并覆盖jansi的穿透检测。 - Eisenknurr
显示剩余4条评论

29

EclipseTarget Management Terminal插件支持ANSI转义字符,包括颜色代码。我会用它来运行sbtScalaTest

原始的Target Management Terminal插件是为了访问远程系统而设计的。但是,如果你在Linux、Mac或Solaris上运行,而不是Windows,你可以使用Local Terminal插件,它增加了直接附加到本地shell或程序的能力。

安装Local Terminal插件会自动安装Target Management Terminal,所以你只需要安装本地终端:

安装Local Terminal插件

  1. 从Eclipse菜单选择Help -> Install New Software...
  2. 选择你所使用的Eclipse版本的主要更新站点(例如Ganymede、Helios、Indigo)
  3. 选择General Tools -> Local Terminal
  4. 按照正常安装插件的步骤进行操作(点击下一步、接受许可证、重启Eclipse等)。

如果你正在运行不支持Local Terminal插件的平台,则仍然可以使用SSH或Telnet与Target Management Terminal一起使用:

安装Target Management Terminal插件

  1. 从Eclipse菜单选择Help -> Install New Software...
  2. 选择你所使用的Eclipse版本的主要更新站点(例如Ganymede、Helios、Indigo)
  3. 选择Mobile and Device Development -> Target Management Console
  4. 按照正常安装插件的步骤进行操作(点击下一步、接受许可证、重启Eclipse等)。

使用

  1. 从Eclipse菜单选择Window -> Show View -> Other
  2. 选择Terminal -> Terminal视图。
  • 在视图中点击绿色的“连接”按钮,并输入详细信息以连接到您的本地系统。如果安装了Local Terminal插件,则其中一个选项是“本地程序”。默认情况下,为您的本地shell定义了一个程序,但您可以设置其他程序。例如,我有一个sbt的条目。
  • 如果您更习惯白底黑字,您可能需要:

    1. 打开Eclipse首选项
    2. 选择终端
    3. 勾选反转终端颜色

    1
    哇,我已经放弃了这个。感谢你的到来! - Duncan McGregor
    我该如何将 System.out.println() 的标准输出重定向到这个终端,而不是默认的 Eclipse 控制台? - Mark
    1
    @Mark:如果您发布一个新问题来提问而不是在评论区提问,也许您会更容易得到答案。 - Jim Hurne
    @Mark,请查看 ianinini 的答案。这在默认控制台中有效。如果未指定,控制台字体和颜色将保持默认;如果使用 ANSI 转义,则进行着色。 - WesternGun
    看起来本地终端不再可用 - 我无法在Eclipse 2022-03中找到它。 - pavon

    15

    这对我非常有效:

    https://marketplace.eclipse.org/content/ansi-escape-console

    只需安装它,它就会自动修改Eclipse的默认控制台行为。 (您可以使用提供的按钮轻松禁用它。)

    我已将其用于运行输出转义代码以修改文本颜色的代码。 它表现出所期望的行为。


    之前的回答有点陈旧,但这个插件是较新的并且运行良好。 - giZm0
    我无法在Eclipse 2020-12上使其工作。那个按钮是什么,它在哪里? - Andrew S

    6

    在Eclipse 4.25(Eclipse 2022-09同时发布的一部分)中,无需使用Eclipse插件:

    支持控制台中的ANSI转义码

    控制台解释ANSI转义码以生成样式化输出。

    支持16种颜色/256种颜色/真彩色前景色和背景色、调色板,以及加粗、斜体、下划线、反转、隐藏、删除线和框架等属性:

    带有彩色文本的控制台截图--https://www.eclipse.org/eclipse/news/4.25/images/ansi_sample.png

    仅支持 "CSI n m" (SGR, 选择图形呈现) 控制序列。
    它们设置显示属性,但不能用于更改输出内容(擦除操作、光标定位、滚动)。
    非 SGR 序列不被解释,但会被识别并隐藏,因此您将看不到它们。

    此功能适用于所有标准输出或标准错误的文本输出。
    它适用于Java、C/C++、Perl、Python、shell、Groovy、Maven以及任何Eclipse支持的语言。

    首选项:

    ANSI支持首选项对话框截图--https://www.eclipse.org/eclipse/news/4.25/images/ansi_prefs.png


    4

    此插件允许用户显示一个带有shell提示符的彩色终端。然而,似乎无法让用户将程序输出直接输出到该终端。 - Psychonaut

    1

    1
    如果可以的话,我想保留在Eclipse中的输出。 - Duncan McGregor
    1
    在这个问题上点踩吧。问题是“一个尊重ANSI颜色代码的eclipse控制台视图”,而不是如何将eclipse输出导入终端。 - Kevin Parker

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