使用.NET的ANSI-着色控制台输出
我尝试使用 ansi Escape代码使用以下最小C#程序: using System; // test.cs class foo { static void Main(string[] args) { Console.WriteLine("\x1b[36mTEST\x1b[0m"); } } 我正在运行 ansicon v1.66 Windows 7 x64上的v1.66 with Windows 7 x64 with csc.exe( microsoft) (R)Visual C#编译器版本4.6.0081.0 ). 彩色输出在此配置中正常工作; Ansicon本身正在完美地工作. 进行交叉检查,我使用一个node.js单线,100%等同于c#程序: // test.js console.log("\x1b[36mTEST\x1b[0m"); ,甚至更基础,是手工制作的文本文件: 正确执行预期的事情:打印蓝绿色颜
2 2024-01-03
编程技术问答社区
使用.NET的ANSI-着色控制台输出
我尝试使用 ansi Escape代码使用以下最小C#程序: using System; // test.cs class foo { static void Main(string[] args) { Console.WriteLine("\x1b[36mTEST\x1b[0m"); } } 我正在运行 ansicon v1.66 Windows 7 x64上的v1.66 with Windows 7 x64 with csc.exe( microsoft) (R)Visual C#编译器版本4.6.0081.0 ). 彩色输出在此配置中正常工作; Ansicon本身正在完美地工作. 进行交叉检查,我使用一个node.js单线,100%等同于c#程序: // test.js console.log("\x1b[36mTEST\x1b[0m"); ,甚至更基础,是手工制作的文本文件: 正确执行预期的事情:打印蓝绿色颜
14 2024-01-03
编程技术问答社区
如何在Windows7 64位命令终端中识别Ansi颜色转义代码
我尝试过Ansicon,但我仍然无法在Windows 7 64位上的CMD.EXE命令提示中识别和解释ANSI逃生序列.是否有人能够正确地工作并使用此操作系统获得颜色的控制台? 解决方案 我今天遇到了同样的问题,并找到了解决方法. 命令行实用程序 windows ansi color 检测ANSI颜色代码并设置相应的控制台颜色. 示例: myapp.bat | wac 其中WAC是Windows Ansi Color Utility 其他解决方案 ansicon ( source )似乎对我有效... 将Ansicon放在您打算保留的地方... 运行ANSICON -I 关闭终端 打开一个新的... 其他解决方案 Ansicon使用DLL注入来启用CMD.EXE中的ANSI颜色,该颜色是用标准用户特权禁用的. 尝试使用"作为管理员运行"启动Ansicon(右键单击)
10 2023-12-07
编程技术问答社区
ANSI色组图形渲染在批处理过程中中断,并在进行后工作
我有一个批处理,该子部分通过文件的线路进行迭代,以供exes尝试运行,然后根据其出口代码进行批处理. 出于某种原因,ANSI SGR似乎在设置了上一篇图形演绎后打破或呼应了文字文字,而不是重新呈现. 我回到重新引用此问题和原始文档,但是我不确定为什么我的批次的特定区域在回荡后将控制台内的ANSI颜色粘合. 我将工具与Notepad交换,您可以手动关闭零外观,或使用控制面板结束该过程以获取非零退出. test_map.log的内容不大,因为您实际上只是在使用记事本并发送一些args.这就是我的设置: C:\temp\qt_selftest.exe C:\temp\sub_test.exe C:\temp\cmd_module_test.exe C:\temp\failing_qt_test.exe C:\temp\passing_qt_test.exe C:\temp\random_qt_test.exe C:\temp\fail_module.exe C:\
6 2023-12-07
编程技术问答社区
如何在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'); 我已经完成了许多测试,直接写入屏幕时,CScript输出的逃生序列无能为力,并且仅在首先写入文件然后打字时工作,否则会被for/f捕获并回声. 我有两个问题: 1)为什么直接写入CScript的控制台工作? 2)如何直接写入工作? 我想将文本突出显示到我的查找/替换实用程序(因此, 解决方案 MS Documentation 状态 以下终端序列被控制台主机拦截 如果写入输出流,如果 enable_virtual_terminal_proce
2 2023-12-07
编程技术问答社区
有没有一种方法可以使用低电平输出来输出ANSI转义序列?
我正在尝试在控制台中制作图形引擎.我不使用任何GLS,但很快希望开始.它是用C编写的,就目前而言,它能够用颜色构建半3D环境,但是我发现,使用ANSI Escape sequences Win CMD支持了真正的配色方案. 在我对此主题的研究中,我发现了WriteFile(),所有printfs和putc均基于Win10.但是对于所有商品而言,它还没有提供它仍然很慢.如内部代码所示,WriteFile基本上是基于此代码: NtWriteFile: mov r10,rcx mov eax,8 test byte ptr [7FFE0308h],1 jne NtWriteFile+15h (07FFBA80CAAA5h) syscall ret 它很好,但效率缓慢. 我的意思是:我将控制台的输出句柄传递到 writefile()和缓冲区,但对于160*60的屏幕(考虑每个角色都有其自己的ESC [48
2 2023-12-07
编程技术问答社区
在Windows控制台中用自定义屏幕缓冲器启用ANSI颜色支持(C++)。
我正在尝试通过CreateConsoleScreenBuffer(). hConsole = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, 0, NULL, CONSOLE_TEXTMODE_BUFFER, NULL); DWORD dwMode = 0; GetConsoleMode(hConsole, &dwMode); dwMode |= ENABLE_EXTENDED_FLAGS; SetConsoleMode(hConsole, dwMode); dwMode = 0; GetConsoleMode(hConsole, &dwMode); dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; SetConsoleMode(hConsole, dwMode); SetConsoleActiveScreenBuffer(hConsole); 似乎SetConsolem
4 2023-12-06
编程技术问答社区
Windows控制台是否支持ANSI?
Windows控制台支持ANSI控制字符是否? 解决方案 它默认不支持许多ANSI控制字符(Wikipedia文章中也提到了查看这个问题的答案:如何加载ANSI逃生代码或在Winxp CMD Shell中获取彩色文件列表? 您可能会发生在有用的事情上. 其他解决方案 我假设您是指ASCII控制字符. 答案是"一些".例如,您可以读取Backpace Keypresses,并且可以将诸如ASCII" Bell"字符之类的东西进行管道. 但是,如果您的意思是Windows控制台会自动解析逃逸的字符,例如将" \ b"转换为"贝尔",那么不,您必须自己做. 请注意,我谈论的是直接进入控制台而不是批处理文件,请参阅 @QuessionFactory的答案.
10 2023-12-06
编程技术问答社区
在windows终端中启用ANSI序列
我偶然发现了一个有趣的问题 在Windows: C:\> lua > print("\x1b[95mMagenta\x1b[0m") -[95mMagenta-[0m 但是,如果我运行os.execute()即使使用一个空命令, 在此之前,它可以按预期工作: C:\> lua > os.system(""); print("\x1b[95mMagenta\x1b[0m") Magenta (最后一行用洋红色颜色打印) 为什么会发生,以及如何使ANSI代码起作用 不打电话os.execute()? 解决方案 对于ANSI代码以在控制台中工作,您应该通过调用Winapi函数SetConsoleMode来设置特定ENABLE_VIRTUAL_TERMINAL_PROCESSING模式. 当您在lua中调用os.execute()时,lua调用C Runtime函数system(),它创建cmd.exe process,可以初始化所有铃铛和哨声. 但
0 2023-12-06
编程技术问答社区
从Windows批处理文件中检测ANSI兼容的控制台?
Windows 10 Console主机,conhost.exe,具有 ANSI Escape susce secoress的本机支持,较旧的版本没有.如何检测批处理文件中的控制台ANSI支持的存在或不存在? 是否可以致电 GetConsoleMode 或其他Windows API呼叫直接从批处理文件? 解决方案 您最后一个问题的答案是:是的,借助PowerShell代码.该批处理文件执行您要求的操作: @echo off setlocal set /A STD_OUTPUT_HANDLE=-11 set /A ENABLE_PROCESSED_OUTPUT=1, ENABLE_WRAP_AT_EOL_OUTPUT=2, ENABLE_VIRTUAL_TERMINAL_PROCESSING=4 PowerShell ^ $GetStdHandle = Add-Type 'A' -PassThru -MemberDefinition ' ^ [
4 2023-12-06
编程技术问答社区
带有ANSI代码的文本编辑器/查看器渲染Windows的支持
我需要一些工具才能在Windows上正确显示包含ANSI代码的文本.不需要全部支持,但至少要着色/粗体. 原因:我的记录器/调试模块使用使用ANSI代码有色的重要部分产生了丰富的输出.在串行终端进行调试时,这很有帮助,但是如果我将调试转换为文件或将其复制到Windows上的文本编辑器中(交互式远程调试并不总是可行),则最多可以剥离所有ANSI代码,请在最坏的情况下,它们被渲染为垃圾字符,掩盖了真实数据.基本的编辑功能能够挑选特定零件,注释等. . 解决方案 您可能对ASCII/ANSI实用程序有更多运气,例如此处列出的公司: **注意:此页面上的某些文件可能已经过时了,您可能会在其各自的主页上找到这些较新的版本.* 例如,可以在此处找到Nfopad的最新版本. 其他解决方案 开源编辑器 Atom 具有软件包语言 - ansi风格.它支持除;r;g;b外的各种格式. 其他解决方案 我一直在寻找一种解决方案来显示ANSI颜色(用于程序调试输出可读性),并偶然
2 2023-12-06
编程技术问答社区
在Windows上,ANSI转义序列不会被打印到stdout。
我正在尝试使用windows上的node.js编写一个ANSI逃生序列,但它似乎不起作用. 具体来说,我使用 conemu /en/ansiescapecodes.html" rel =" nofollow">支持子集ANSI代码.我创建了一个测试文件,该文件应重命名当前控制台选项卡: process.stdout.write('\x1b]9;3;"abc"\x1b\x5c'); 但是,当我运行它时什么都不会发生.如果我运行node test > out.txt,则将正确的字节写入输出文件. 为什么逃生序列不起作用? 解决方案 当节点的stdout连接到非相互作用的水槽(即管道或重定向到文件)时,写入process.stdout的字节是按原样编写的.因此,运行node test > out.txt产生预期结果. 但是,当节点连接到Windows中的交互式终端时(通过Libuv)实际上解析所有ANSI逃生代码,以便它可以使用Windows API透明地模
6 2023-12-05
编程技术问答社区
用C语言清除Windows上的命令提示符
是否可以使用Windows上的C清除命令提示符的输出? 例如,在Linux上我可以做 printf("\033[2J"); ,但据我所知,Windows无法识别ANSI逃生代码 谢谢. 编辑:我想我还需要将光标返回到清除后的下一个输出... 之后 解决方案 在Windows上有很多方法可以做到这一点. 您包括conio.h并致电_clrscr(); 或者您可以致电system("cls"); 其他解决方案 作为conio.h或系统调用的替代方案,只是如何在Windows中完成的实现(I Suposse(与Conio库相似). #include int main(void){ HANDLE hStdout; CONSOLE_SCREEN_BUFFER_INFO csbiInfo; DWORD dwCells, dwWritten; // Get console handle
0 2023-12-05
编程技术问答社区
用于Python的Colorama,在Windows上不返回彩色的打印线
我已经为Python安装了Colorama.我已导入模块如下: import colorama from colorama import init init() from colorama import Fore, Back, Style print Fore.RED + "My Text is Red" ,它返回了ANSI Charaters .... esc[31mMy Text is Red 这不是我所期望的.我做错了吗? 谢谢. 解决方案 我在Windows 7 x64上遇到了同样的问题,我终于使颜色正常工作,而不必通过将参数convert=True添加到INIT呼叫中. . from colorama import init, Fore, Back, Style init(convert=True) print(Fore.RED + 'some red text') 其他解决方案 我从未成功在Windows CMD.exe中
0 2023-12-05
编程技术问答社区
Python。我怎样才能使ANSI转义代码在Windows中也能工作?
如果我在Linux下的Python运行此操作,则可以工作: start = "\033[1;31m" end = "\033[0;0m" print "File is: " + start + "" + end 但是,如果我在Windows中运行它不起作用,如何使ANSI逃生代码在Windows上也起作用? 解决方案 对于Windows,调用os.system("")使ANSI逃生序列正确处理: import os os.system("") # enables ansi escape characters in terminal COLOR = { "HEADER": "\033[95m", "BLUE": "\033[94m", "GREEN": "\033[92m", "RED": "\033[91m", "ENDC": "\033[0m", } print(COLOR["GREEN"]
18 2023-12-05
编程技术问答社区
如何使win32控制台在`c'中识别ANSI/VT100转义序列?
我正在构建Ncurses库的轻量级版本.到目前为止,它可以与与VT100兼容的终端一起运行良好,但是Win32控制台无法识别\033代码作为逃生序列的开始: # include # include "term.h" int main(void) { puts(BOLD COLOR(FG, RED) "Bold text" NOT_BOLD " is cool!" CLEAR); return 0; } 为了加载ANSI.SYS驱动程序并确认ANSI/VT100逃脱序列,需要在C code级别上完成什么? ? 解决方案 [更新]有关最新Windows 10,请阅读 @brainslugs83的有用贡献,在此答案的评论中下方. 在Windows 10 Anniversary Update之前的版本中: ansi.sys有一个限制,它只能在Windows 95-Vista下的MS-DOS子系统的上下文中运行. Microsof
0 2023-12-05
编程技术问答社区
如何在 VS-code 输出选项卡中使用 \r 转义序列?
以下Python代码: print("hello\rworld") ...打印world在python repl(从terminal.app(macOS)或vs-code终端启动)和jupyter笔记本. 但是," VS-Code输出"选项卡似乎忽略了ANSI-ESCAPE序列: 有可能覆盖这种行为吗? 解决方案 您可以尝试不使用代码跑步者扩展名,而是使用Python扩展名来执行代码.这样,执行发生在终端中,有更好的机会\r将进行线供稿而不是newline.
0 2023-11-25
编程技术问答社区
vimscript t_ts标题,使用两个逃生代码?
要在VIM中设置TMUX标题,您可以做类似的事情: if hastmux == 'true' || &term == "screen" || &term == "screen-256color" set t_ts=^[]0; set t_fs=^G endif 但是,要更新窗口名称,您需要 if hastmux == 'true' || &term == "screen" || &term == "screen-256color" set t_ts=^[k set t_fs=^G endif 是否有一种方法可以指定两个t_ts,或者更确切地说,将两个ANSI代码链连接在一起?我还没有找到一个. 解决方案 当然,您不能拥有2 t_ts,但是您可以实现自己想要的vim和tmux合作.令vim在tmux中设置标题,然后让tmux在窗口中设置标题.在VIM中: set t_ts=^[k set t_fs=^G 参见 in tmux:
2 2023-11-19
编程技术问答社区
如何从Vim中发送转义序列?
最近,Apple包括支持在终端状态栏中显示工作目录和文件的支持.必须发送的逃生序列(设置当前文件)是: ESC ] 6 ; Pt BEL 其中Pt是file:// url指向当前正在编辑的文件.因此,我认为我可以让VIM作为逃生序列发送此命令,但是我遇到了一些麻烦.我到目前为止有这个: au BufNewFile,BufReadPost,BufFilePost,BufWritePost * echo ,但我觉得它不会那样工作.另外,我不知道如何将当前文件作为file:// URL获取,尽管我怀疑Netrw可能会帮助我.有什么想法吗? 编辑 到目前为止,我有这个: au BufNewFile,BufReadPost,BufFilePost * echo printf('\e]6;file://%s%s\a', $HOSTNAME, expand('%:p')) 但它仍然无法正常工作 - $HOSTNAME没有扩展
12 2023-11-19
编程技术问答社区
VIM:ANSIESC-如何默认如何将它们打开?
我有带有彩色日志条目的日志文件(假设使用扩展名 *.smt2),其中颜色由ANSI逃生代码定义.我基于 ansiesc.vim . . 现在,当我打开VIM编辑器时,我需要键入:ANSIESC. 我该如何在我的.vimrc中添加:ansiesc在我的默认视图中? 解决方案 您的AutoCMD仅适用于作为命令行参数传递的第一个文件,因为:AnsiEsc命令仅适用于当前缓冲区.它将错过通过:edit或:split打开的文件.更好地使用BufRead事件: autocmd BufRead * AnsiEsc 另外,我想知道您是否仅使用vim查看日志文件(这是可惜)? :AnsiEsc命令可能会干扰编辑其他类型的文件. 通常的解决方案是定义A 自定义Filetype ,例如. log.然后,您可以通过~/.vim/ftplugin/log.vim中的以下脚本启用这些文件的插件: " Only do this when not done yet for this
2 2023-11-19
编程技术问答社区