标签: ansi-escape

Ruby popen3和ANSI颜色

我试图让watchr在文件发生变化时自动运行测试,并获得我需要的大部分工作,除了RSpec的所有ANSI颜色都被忽略了.违规代码如下:

stdin, stdout, stderr = Open3.popen3(cmd)
stdout.each_line do |line|
  last_output = line
  puts line
end
Run Code Online (Sandbox Code Playgroud)

当cmd等于类似的东西时rspec spec/**/*.rb,上面的代码运行RSpec很好,除了所有输出都是单色的.我已经看过使用了Kernel.system,但系统没有返回输出,我需要确定测试是否失败/成功.如何从Ruby中执行包含ANSI颜色的脚本获取输出,并将其输出到控制台?

ruby colors ansi-escape

6
推荐指数
2
解决办法
869
查看次数

\ e的目的是什么?

我想知道这个逃脱序列.在PHP手册说,\e表示"逃离"那好,我GOOGLE了一下,发现有关ANSI转义序列,我不知道这\e是指他们.

来自维基百科:

ANSI转义序列是嵌入在文本中的字符,用于控制视频文本终端上的格式,颜色和其他输出选项.

但是我无法看到这个转义序列和PHP如何交互.我不知道发布的所有内容是否正确.

有人可以谈论这个话题并展示例子吗?

php regex ansi-escape

6
推荐指数
1
解决办法
2707
查看次数

bash - 颜色转义代码

我有一个脚本使用转义码来突出显示其输出中的文本匹配.一切都很好,除非输出通过管道输出less,打印转义码

例如

$ echo -e "\033[31m -- Hello World! -- \033[m"
 -- Hello World! --
Run Code Online (Sandbox Code Playgroud)

管道less:

$ echo -e "\033[31m -- Hello World! -- \033[m" | less
ESC[31m -- Hello World! -- ESC[m
Run Code Online (Sandbox Code Playgroud)

我不知道如何其他工具一样ls,grep等能够输出色彩但它在管道输送到看起来不错less

linux bash colors ansi-escape

6
推荐指数
3
解决办法
5255
查看次数

设置cygwin终端窗口的大小

我有一个小的perl脚本,它在cygwin终端中执行并打印出格式化的表.在默认窗口大小,如果文本太长,cygwin将插入一个换行符,从而破坏我的表的格式.有没有办法从我的perl脚本将cygwin窗口设置为更大的尺寸以避免这种问题?

terminal perl cygwin ansi-escape mintty

6
推荐指数
3
解决办法
3653
查看次数

如何确定ANSI终端的大小?

标准输入和输出连接到实现ANSI转义序列的终端,但其尺寸未知.

我需要知道终端有多大,以便于在其上绘制全屏文本UI.我该如何获得尺寸?

正确的大小不会加载到环境变量中.我不能使用TIOCGETS; 调用将返回成功但值不正确 - 内核也不知道大小.

搜索stackoverflow有很多很多答案,但它们都依赖于操作系统提供单向或反向的答案; 但这次不是真的.

我能找到的最好的线索是返回当前光标位置的DSR命令; 但是没有向底部/右侧命令移动.

language-agnostic terminal ansi ansi-escape

6
推荐指数
1
解决办法
1676
查看次数

如何在Windows 10上使用带有CSCRIPT的ANSI转义序列?

我正在尝试使用CSCRIPT(JScript)在Windows 10控制台中提供的新VT100 ANSI转义序列功能.但我无法让它发挥作用.

这是一个非常简单的JScript脚本:

test.js

WScript.Echo('\x1B[7mReverse\x1B[0m Normal');
WScript.stdout.WriteLine('\x1B[7mReverse\x1B[0m Normal');
Run Code Online (Sandbox Code Playgroud)

我已经完成了许多测试,CSCRIPT输出的转义序列直接写入屏幕时无效,只有先写入文件然后再打字才能工作,或者由FOR/F和ECHOed捕获.

在此输入图像描述

我有两个问题:

1)为什么直接写入控制台不能从CSCRIPT工作?
2)如何直接写作?

我想在我的JREPL.BAT正则表达式查找/替换实用程序(因此标记)中添加文本突出显示,但如果它需要临时文件和/或FOR/F,我将不会实现该功能.

wsh batch-file ansi-escape windows-10

6
推荐指数
1
解决办法
778
查看次数

关闭Windows 7上的perl-debug-m ansi转义序列

在Windows 7 cmd.exe上,perl6-debug-m脚本输出ansi转义序列来设置颜色,我想.如何抑制这些代码或至少使其正常运行?在使用Perl 4和Perl 5超过20年之后,我才开始使用Perl 6.我需要这个在Windows上工作,因为我试图从Perl 5移植一个程序.

C:\rakudo\bin\lib>perl6 -v
This is Rakudo Star version 2018.04.1 built on MoarVM version 2018.04.1
implementing Perl 6.c.

C:\rakudo\bin\lib>perl6-debug-m
?[35m>>> LOADING ?[0m<REPL 1>
?[34m+ <REPL 1> (1 - 1)?[0m
?[34m| ?[0m?[1;33mREPL?[0m
?[34m> ?[0mquit
?[34m- ?[0mRun END blocks (y/N)?

C:\rakudo\bin\lib>perl6 -V |grep -v "moar:"
distro::auth=unknown
distro::desc=2018-05-20T09:17:12.587605-04:00
distro::is-win=True
distro::name=mswin32
distro::path-sep=;
distro::release=unknown
distro::signature=
distro::version=6.3
kernel::arch=unknown
kernel::archname=unknown-win32
kernel::auth=unknown
kernel::bits=64
kernel::desc=
kernel::hardware=unknown
kernel::name=win32
kernel::release=unknown
kernel::signature=
kernel::version=unknown
perl6::build-date=2018-05-07T10:08:20Z
perl6::codename=
perl6::implementation=Rakudo Star
perl6::language_version=6.c
perl6::libdir=C:\rakudo\share
perl6::prefix=C:\rakudo
perl6::release-number=
perl6::source-digest=688d0872d150048d083b7a499e9fc7a9e8b6ab5b
perl6::version=2018.04.1
repo::chain=inst#C:\Users\danhale\.perl6 inst#C:\rakudo\share\perl6\site inst#C:\rakudo\share\perl6\vendor inst#C:\rakudo\share\perl6 …
Run Code Online (Sandbox Code Playgroud)

windows debugging ansi-escape perl6

6
推荐指数
1
解决办法
76
查看次数

使用 Vim 将终端标题设置为当前文件名和路径

我希望 Vim 将当前打开的文件的名称发送到 macOS 终端。

可以通过发送转义序列来告诉 macOS 终端当前打开的文档的文件名\e]6;FILENAME\a。这可以看出正在执行命令printf "\e]6;FileName.txt\a"

我希望 Vim 将当前打开的文档的文件名发送到终端。看起来这应该很容易,但是:echo "\e]6;FileName.txt\007"会将转义序列转换为可打印的字符并为其添加一些颜色,因此它会输出^[]6;FileName.txt^G终端无法识别的输出。

如何配置:echo不破坏我的转义序列?

vim terminal ansi-escape

5
推荐指数
1
解决办法
2275
查看次数

readline 被 ANSI 转义序列混淆

我正在编写一个 Python 脚本,有时需要用户输入输入。我在 macOS Sierra 上使用 bash。

为了接收输入,我写了以下内容:

import readline  # gnureadline 6.3.8

START = '\033[91m\033[1m'
END = '\033[0m'

response = raw_input(START + 'Enter text: ' + END)
Run Code Online (Sandbox Code Playgroud)

START我在和中使用 ANSI 转义序列END来直观地区分脚本的提示符和用户的文本输入。

不幸的是,一旦我开始输入文本,程序就会丢失用户输入文本的实际开头位置。下面的第一克拉是CTRLA现在映射到的位置,第二克拉是CTRLE我要去的地方。箭头键同样认为用户输入的开始和结束是偏移的,如图所示。

Enter text: hello my name is             
                         ^               ^  
Run Code Online (Sandbox Code Playgroud)

我尝试了一些方法来调试这个。

  1. 我尝试在提示和文本输入之间添加换行符,但这只会使偏移量变得更糟。

  2. 如果我使用箭头键而不使用诸如CTRLACTRLE、 选项箭头之类的东西来浏览字符串,那么这将按预期工作。也就是说,考虑到用户输入的字符串的长度和复杂性,仅使用箭头键在字符串中移动对于用户来说将是痛苦的。

  3. 最重要的是,如果我根本不使用STARTand ,这会完美地工作。END也就是说,脚本的可用性下降了——很难从完整版本的脚本中的所有其他文本中找出提示。

是否有一些技巧可以让我能够使用 ANSI 转义序列来格式化提示,而不会影响用户使用CTRLACTRLE和选项箭头进行导航的能力?

python bash ansi-escape

5
推荐指数
1
解决办法
1264
查看次数

用于折叠/折叠文本的 ANSI 转义序列(可能是分层的)

例如,在Travis 中,通过打印travis_fold:start:<section-name>travis_fold:end:<section-name>,其行为类似于 Travis 的转义码,它将折叠文本。请参阅此处有关 Travis 折叠的信息。例如,请参阅此输出

对于 Linux/Unix 终端,这通常非常有用。是否有任何ANSI 转义序列/代码扩展可以做这样的事情(当然还有相应的终端模拟器来处理这些)?


现有的转义码(和扩展):

linux terminal ansi-escape terminal-emulator

5
推荐指数
1
解决办法
331
查看次数