To kołysze! Jako gracz uwielbiam funkcję trzęsienia ziemi. Jednak konsola wydaje się być zablokowana na górze ekranu (nawet z wyłączoną opcją zablokowania na górze). Dzięki
Ced
jak uruchamiasz cmd z kartami?
Mikey,
@Mikey What? Najpierw przeczytaj odpowiedź.
Maximus
35
Żadna z odpowiedzi na tej stronie nie wspomina o ważnym aspekcie nowej obsługi ANSI Terminal Control, która została dodana do hosta konsoli Windows 10 w kompilacji 16257 (i późniejszych). Mianowicie, domyślnie nie jest to e̲n̲a̲b̲l̲e̲d̲ . O ile określone oprogramowanie, którego używasz, nie umożliwia przetwarzania ANSI przez wywołanie interfejsu API SetConsoleMode z ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)flagą, nie zobaczysz kolorów ani nie otrzymasz przetwarzania ANSI dla tej aplikacji.
Pisząc z WriteFile lub WriteConsole , znaki są przetwarzane dla VT100 i podobnych sekwencji znaków sterowanie ruchem kursora że kontrola, kolor / tryb czcionki i inne operacje, które mogą być wykonywane za pośrednictwem istniejących interfejsów API konsoli. Aby uzyskać więcej informacji, zobacz sekwencje terminali wirtualnych konsoli.
Zgaduję, że powodem pokazanym na tej stronie jest to, że najwyraźniej echopolecenie (a może część przetwarzania wsadowegoCMD.EXE lub conhost) umożliwia przetwarzanie ANSI przez wywołanie właśnie wspomnianego API. Ale wiele innych narzędzi lub plików wykonywalnych, które zapisują stdinlub stdoutmogą tego nie robić, w takim przypadku nie zobaczysz kolorów dla tych procesów.
Na szczęście globalne ustawienie domyślne można zmienić z opcji opt-in na opt-out . Klucz rejestru at HKEY_CURRENT_USER\Console\VirtualTerminalLevelustawia globalne domyślne zachowanie przetwarzania sekwencji specjalnych ANSI. Utwórz DWORDklucz (jeśli to konieczne) i ustaw jego wartość, aby domyślnie 1globalnie 0włączało (lub wyłączało) przetwarzanie ANSI.
Zauważ, że to ustawienie rejestru kontroluje wartość domyślną , co oznacza, że wpływa tylko na aplikacje konsoli, które nie manipulują jawnie trybem konsoli przez wywołanie SetConsoleMode(...). Wynika z tego, że chociaż wartość rejestru może pomóc w włączeniu ANSI dla aplikacji nieobsługujących trybu konsoli , nie wpłynie ona na żadną aplikację znającą tryb konsoli, która (z jakiegoś powodu) może jawnie wyłączyć ANSI.
Zachowanie następujących sekwencji jest oparte na technologii VT100 i pochodnych emulatorach terminali, w szczególności na emulatorze terminali xterm. Więcej informacji na temat sekwencji końcowych można znaleźć na stronie http://vt100.net i http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Możesz także zmienić domyślne kolory za pomocą Colortool . Nowe instalacje systemu Windows 10 otrzymają nieznacznie zmodyfikowane kolory, które są łatwiejsze do odczytania (zwłaszcza niebieski na czarnym), ale aktualizacje zachowają stare, trudne do odczytania kolory.
10
Czy istnieje emulator konsoli dla systemu Windows, który interpretuje kolorowanie ANSI?
Windows przed 10 - brak natywnej obsługi kolorów ANSI na konsoli
W przypadku wersji Windows poniżej 10 konsola poleceń Windows domyślnie nie obsługuje kolorowania wydruków. Możesz zainstalować Cmder , ConEmu , ANSICON lub Mintty (domyślnie używane w GitBash i Cygwin), aby dodać obsługę kolorowania do konsoli poleceń Windows.
Windows 10 - Kolory wiersza poleceń
Począwszy od systemu Windows 10 konsola Windows domyślnie obsługuje sekwencje specjalne ANSI i niektóre kolory.
Nie jestem pewien, w jakiej dokładnie wersji Win10, ale wspomniano tutaj: github.com/symfony/symfony/issues/19520 Na moim firmowym laptopie - Ver 1511 (kompilacja systemu operacyjnego 10586.753) - nie potrzebowałem tego. Na moim domowym komputerze musiałem użyć ansiconu, ponieważ kolory nie były domyślnie włączone.
geff_chang
4
Właśnie wprowadzili flagę, która kontroluje kolorowe wydruki i domyślnie jest fałszywa. Zobacz wpdev.uservoice.com/forums/… ) --- Symfony używa PHP.exe w systemie Windows, gdzie flaga była wyłączona, więc musieli czekać na łatkę, która wylądowała tutaj: github.com/php/php- src / pull / 2103 . Sytuacja rozwiązana. --- W przypadku cmd.exe flaga zawsze jest prawdziwa. Dlatego masz obsługę kolorów na konsoli.
Jens A. Koch
1
czy te kody działałyby również w skrypcie powłoki w systemie Linux? czy jest to zrobione w inny sposób?
Żadna z odpowiedzi na tej stronie nie wspomina o ważnym aspekcie nowej obsługi ANSI Terminal Control, która została dodana do hosta konsoli Windows 10 w kompilacji 16257 (i późniejszych). Mianowicie, domyślnie nie jest to e̲n̲a̲b̲l̲e̲d̲ . O ile określone oprogramowanie, którego używasz, nie umożliwia przetwarzania ANSI przez wywołanie interfejsu API SetConsoleMode z
ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)
flagą, nie zobaczysz kolorów ani nie otrzymasz przetwarzania ANSI dla tej aplikacji.Zgaduję, że powodem pokazanym na tej stronie jest to, że najwyraźniej
echo
polecenie (a może część przetwarzania wsadowegoCMD.EXE
lubconhost
) umożliwia przetwarzanie ANSI przez wywołanie właśnie wspomnianego API. Ale wiele innych narzędzi lub plików wykonywalnych, które zapisująstdin
lubstdout
mogą tego nie robić, w takim przypadku nie zobaczysz kolorów dla tych procesów.Na szczęście globalne ustawienie domyślne można zmienić z opcji opt-in na opt-out . Klucz rejestru at
HKEY_CURRENT_USER\Console\VirtualTerminalLevel
ustawia globalne domyślne zachowanie przetwarzania sekwencji specjalnych ANSI. UtwórzDWORD
klucz (jeśli to konieczne) i ustaw jego wartość, aby domyślnie1
globalnie0
włączało (lub wyłączało) przetwarzanie ANSI.Zauważ, że to ustawienie rejestru kontroluje wartość domyślną , co oznacza, że wpływa tylko na aplikacje konsoli, które nie manipulują jawnie trybem konsoli przez wywołanie
SetConsoleMode(...)
. Wynika z tego, że chociaż wartość rejestru może pomóc w włączeniu ANSI dla aplikacji nieobsługujących trybu konsoli , nie wpłynie ona na żadną aplikację znającą tryb konsoli, która (z jakiegoś powodu) może jawnie wyłączyć ANSI.źródło
Począwszy od systemu Windows 10 TH2 (v1511)
conhost.exe
(i przez rozszerzeniecmd.exe
) obsługuje sekwencje specjalne ANSI, w szczególności kolory:Strona MSDN o sekwencjach terminali wirtualnych konsoli wyjaśnia, jakie sekwencje są obsługiwane i jak je włączyć:
źródło
Windows przed 10 - brak natywnej obsługi kolorów ANSI na konsoli
W przypadku wersji Windows poniżej 10 konsola poleceń Windows domyślnie nie obsługuje kolorowania wydruków. Możesz zainstalować Cmder , ConEmu , ANSICON lub Mintty (domyślnie używane w GitBash i Cygwin), aby dodać obsługę kolorowania do konsoli poleceń Windows.
Windows 10 - Kolory wiersza poleceń
Począwszy od systemu Windows 10 konsola Windows domyślnie obsługuje sekwencje specjalne ANSI i niektóre kolory.
Dokumentacja MSDN
Próbny
Polecenie wsadowe
win10colors.cmd
Został napisany przez Michele locati :źródło