ANSI 색상 처리 기능이있는 Windows 콘솔


34

ANSI 색상을 해석하는 Windows 용 콘솔 에뮬레이터가 있습니까?

우리는 rspec을 사용하고 팀의 일부는 Windows를 사용하며 채색을위한 특수 문자열은 그다지 유용하지 않습니다.).

답변:


40

ConEmu 는 Xterm 256 색상 확장을 사용하는 ANSI X3.64를 지원합니다. 이 콘솔 에뮬레이터의 저자입니다.

AnE 시퀀스는 ConEmu 탭에서 실행되는 모든 프로세스에 대해 처리됩니다.

AFAIK, ConEmu는 Ansicon보다 더 많은 코드를 지원합니다.

ConEmu 및 ANSI X3.64 / Xterm 256 색


1
이 바위! 게이머로서 나는 지진 기능을 좋아합니다. 그러나 콘솔은 화면 상단에 잠겨있는 것처럼 보입니다 (상단에 잠금 옵션이 비활성화되어 있어도). 감사
Ced

탭으로 cmd를 어떻게 실행합니까?
Mikey

@Mikey 무엇? 먼저 답을 읽으십시오.
Maximus

35

이 페이지의 어떤 답변도 빌드 16257 이상에서 Windows 10 콘솔 호스트에 추가 된 ANSI 터미널 제어에 대한 새로운 지원의 중요한 측면을 언급하지 않습니다. 즉, 기본적으로 n̲o̲t̲ e̲n̲a̲b̲l̲e̲d̲ 입니다. 사용중인 특정 소프트웨어 가 플래그 와 함께 SetConsoleMode API를 호출하여 ANSI 처리 를 활성화 하지 않으면 해당 응용 프로그램에 대해 색상이 표시되거나 ANSI 처리가되지 않습니다.ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)

ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemode

WriteFile 또는 WriteConsole로 쓸 때 커서 이동, 색상 / 글꼴 모드 및 기존 콘솔 API를 통해 수행 할 수있는 기타 작업을 제어하는 ​​VT100 및 유사한 제어 문자 시퀀스에 대해 문자가 구문 분석됩니다. 자세한 내용은 콘솔 가상 터미널 시퀀스를 참조하십시오.

이 페이지에 표시된 예제가 작동하는 이유는 echo아마도 명령 (또는 아마도 배치 처리 부분 CMD.EXE또는 conhost)이 방금 언급 한 API를 호출하여 ANSI 처리를 가능하게하기 때문입니다. 그러나 이것을 작성 stdin하거나 작성 stdout하지 않을 수있는 다른 도구 나 실행 파일이 많을 경우 해당 프로세스의 색상이 표시되지 않습니다.

다행히, 글로벌 기본값에서 변경할 수 있습니다 옵트 인옵트 아웃 . at 레지스트리 키는 HKEY_CURRENT_USER\Console\VirtualTerminalLevelANSI 이스케이프 시퀀스 처리를위한 전역 기본 동작을 설정합니다. DWORD키를 생성하고 (필요한 경우) 기본적으로 ANSI 처리 1를 전역 적으로 활성화 (또는 0비활성화)하도록 설정하십시오.

[HKEY_CURRENT_USER \ 콘솔]
"VirtualTerminalLevel"= dword : 00000001

이 레지스트리 설정은 기본값을 제어 하므로을 호출하여 콘솔 모드를 명시 적으로 조작하지 않는 콘솔 앱에만 영향을 미칩니다 SetConsoleMode(...). 레지스트리 값이 콘솔 모드를 모르는 앱에 대해 ANSI를 활성화하는 데 도움이 될 는 있지만 어떤 이유로 든 ANSI를 명시 적으로 비활성화 할 수 있는 콘솔 모드에 정통한 앱 에는 영향을 미치지 않습니다 .

여기에 이미지 설명을 입력하십시오


21

Windows 10 TH2 (v1511)부터 conhost.exe(및 확장하여 cmd.exe)는 ANSI 이스케이프 시퀀스 (특히 색상)를 지원합니다.

아래 언급 된 MSDN 페이지의 이미지

콘솔 가상 터미널 시퀀스에 대한 MSDN 페이지 순서가 지원되는 그들을 사용하는 방법을 설명합니다 :

GetConsoleModeSetConsoleMode 플래그를 사용하여이 동작을 구성 할 수 있습니다 . [...]

다음 시퀀스의 동작은 VT100 및 파생 터미널 에뮬레이터 기술, 특히 xterm 터미널 에뮬레이터를 기반으로합니다. 터미널 시퀀스에 대한 자세한 정보는 http://vt100.nethttp://invisible-island.net/xterm/ctlseqs/ctlseqs.html 에서 찾을 수 있습니다 .



Colortool을 사용하여 기본 색상을 변경할 수도 있습니다 . 새로운 Windows 10 설치는 약간 수정 된 색상으로 표시하기 쉽고 (특히 검은 색에서는 파란색) 업데이트가 오래되고 읽기 어려운 색상을 유지합니다.

10

ANSI 색상을 해석하는 Windows 용 콘솔 에뮬레이터가 있습니까?

10 이전 Windows-콘솔에서 ANSI 색상을 기본적으로 지원하지 않음

Windows 버전 10 이하의 경우 Windows 명령 콘솔은 기본적으로 출력 색상을 지원하지 않습니다. 당신은 설치할 수 중 Cmder , ConEmu , ANSICON 또는 Mintty (GitBash와 Cygwin에서에서 기본적으로 사용되는) 당신의 Windows 명령 콘솔에 지원을 착색 추가 할 수 있습니다.

Windows 10-명령 줄 색상

Windows 10부터 Windows 콘솔은 기본적으로 ANSI 이스케이프 시퀀스 및 일부 색상을 지원합니다.

MSDN 설명서

데모

여기에 이미지 설명을 입력하십시오

배치 명령

win10colors.cmd에 의해 작성되었습니다 미셸 Locati :

@echo off
cls
echo [101;93m STYLES [0m
echo ^<ESC^>[0m [0mReset[0m
echo ^<ESC^>[1m [1mBold[0m
echo ^<ESC^>[4m [4mUnderline[0m
echo ^<ESC^>[7m [7mInverse[0m
echo.
echo [101;93m NORMAL FOREGROUND COLORS [0m
echo ^<ESC^>[30m [30mBlack[0m (black)
echo ^<ESC^>[31m [31mRed[0m
echo ^<ESC^>[32m [32mGreen[0m
echo ^<ESC^>[33m [33mYellow[0m
echo ^<ESC^>[34m [34mBlue[0m
echo ^<ESC^>[35m [35mMagenta[0m
echo ^<ESC^>[36m [36mCyan[0m
echo ^<ESC^>[37m [37mWhite[0m
echo.
echo [101;93m NORMAL BACKGROUND COLORS [0m
echo ^<ESC^>[40m [40mBlack[0m
echo ^<ESC^>[41m [41mRed[0m
echo ^<ESC^>[42m [42mGreen[0m
echo ^<ESC^>[43m [43mYellow[0m
echo ^<ESC^>[44m [44mBlue[0m
echo ^<ESC^>[45m [45mMagenta[0m
echo ^<ESC^>[46m [46mCyan[0m
echo ^<ESC^>[47m [47mWhite[0m (white)
echo.
echo [101;93m STRONG FOREGROUND COLORS [0m
echo ^<ESC^>[90m [90mWhite[0m
echo ^<ESC^>[91m [91mRed[0m
echo ^<ESC^>[92m [92mGreen[0m
echo ^<ESC^>[93m [93mYellow[0m
echo ^<ESC^>[94m [94mBlue[0m
echo ^<ESC^>[95m [95mMagenta[0m
echo ^<ESC^>[96m [96mCyan[0m
echo ^<ESC^>[97m [97mWhite[0m
echo.
echo [101;93m STRONG BACKGROUND COLORS [0m
echo ^<ESC^>[100m [100mBlack[0m
echo ^<ESC^>[101m [101mRed[0m
echo ^<ESC^>[102m [102mGreen[0m
echo ^<ESC^>[103m [103mYellow[0m
echo ^<ESC^>[104m [104mBlue[0m
echo ^<ESC^>[105m [105mMagenta[0m
echo ^<ESC^>[106m [106mCyan[0m
echo ^<ESC^>[107m [107mWhite[0m
echo.
echo [101;93m COMBINATIONS [0m
echo ^<ESC^>[31m                     [31mred foreground color[0m
echo ^<ESC^>[7m                      [7minverse foreground ^<-^> background[0m
echo ^<ESC^>[7;31m                   [7;31minverse red foreground color[0m
echo ^<ESC^>[7m and nested ^<ESC^>[31m [7mbefore [31mnested[0m
echo ^<ESC^>[31m and nested ^<ESC^>[7m [31mbefore [7mnested[0m

버전 1607 (OS 빌드 14393.693)부터 Windows 10의 색상이 비활성화되었습니다.
geff_chang

2
왜 그렇게 믿어야합니까? 사실 부탁드립니다. :가) 변경 로그에 아무것도 없다 support.microsoft.com/en-us/help/4009938 b)는 나를 위해 작동 : imgur.com/a/MNPNm
옌스 A. 코흐

1
정확한 Win10 버전이 확실하지 않지만 여기에 언급되어 있습니다 : github.com/symfony/symfony/issues/19520 회사 노트북-Ver 1511 (OS Build 10586.753)-필요하지 않았습니다. 가정용 PC에서는 기본적으로 색상이 켜져 있지 않았기 때문에 ansicon을 사용해야했습니다.
geff_chang

4
그들은 방금 컬러 출력을 제어하는 ​​플래그를 도입했으며 기본적으로 false입니다. wpdev.uservoice.com/forums/… 참조 ) --- Symfony는 Windows에서 PHP.exe를 사용하고 있는데, 플래그가 꺼져있는 곳에서 패치를 기다려야했습니다. github.com/php/php- src / pull / 2103 . 상황이 해결되었습니다. --- cmd.exe의 경우 플래그는 항상 true입니다. 이것이 콘솔에서 색상을 지원하는 이유입니다.
Jens A. Koch

1
이 코드는 리눅스의 쉘 스크립트에서도 작동합니까? 아니면 다른 방법으로 수행됩니까?
Mikey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.