How to make win32 console recognize ANSI/VT100 escape sequences?

后端 未结 13 1574
忘了有多久
忘了有多久 2020-11-22 03:47

I\'m building a lightweight version of the ncurses library. So far, it works pretty well with VT100-compatible terminals, but win32 console fails to recognise the \\03

相关标签:
13条回答
  • 2020-11-22 04:31

    I personally like clink. It not only processes ANSI codes, it also adds many other features so Windows Console behaves like bash (history, reverse history search, keyboard shortcuts, etc.):

    • The same line editing as Bash (from GNU's Readline library).
    • History persistence between sessions.
    • Context sensitive completion;
      • Executables (and aliases).
      • Directory commands.
      • Environment variables
      • Thirdparty tools; Git, Mercurial, SVN, Go, and P4.
    • New keyboard shortcuts;
      • Paste from clipboard (Ctrl-V).
      • Incremental history search (Ctrl-R/Ctrl-S).
      • Powerful completion (TAB).
      • Undo (Ctrl-Z).
      • Automatic "cd .." (Ctrl-PgUp).
      • Environment variable expansion (Ctrl-Alt-E).
      • (press Alt-H for many more...)
    • Scriptable completion with Lua.
    • Coloured and scriptable prompt.
    • Auto-answering of the "Terminate batch job?" prompt.
    0 讨论(0)
  • 2020-11-22 04:31

    I found this tool to be working for my end. Microsoft Color Tool from GitHub

    Unzip the compressed file then open CMD with Administration permission.

    Go to the folder where you unzip the file in CMD.

    Then execute this command "colortool -b scheme-name"

    The scheme-name needs to be replaced with any of these options below:

    • campbell.ini
    • campbell-legacy.ini
    • cmd-legacy.ini
    • deuternopia.itermcolors
    • OneHalfDark.itermcolors
    • OneHalfLight.itermcolors
    • solarized_dark.itermcolors
    • solarized_light.itermcolors

    In my case, the command would be like this "colortool -b solarized_dark.itermcolors"

    Click right on the console window and select Properties.

    You don't need to change any value just click "OK" to save the setting. (You will notice that your font already contains colors).

    Console Property

    Then restart your cmd or powerShell.

    The ANSI color should be enabled and working with the color scheme you chose before.

    0 讨论(0)
  • 2020-11-22 04:33

    [UPDATE] For latest Windows 10 please read useful contribution by @brainslugs83, just below in the comments to this answer.

    While for versions before Windows 10 Anniversary Update:

    ANSI.SYS has a restriction that it can run only in the context of the MS-DOS sub-system under Windows 95-Vista.

    Microsoft KB101875 explains how to enable ANSI.SYS in a command window, but it does not apply to Windows NT. According to the article: we all love colors, modern versions of Windows do not have this nice ANSI support.

    Instead, Microsoft created a lot of functions, but this is far from your need to operate ANSI/VT100 escape sequence.

    For a more detailed explanation, see the Wikipedia article:

    ANSI.SYS also works in NT-derived systems for 16-bit legacy programs executing under the NTVDM.

    The Win32 console does not natively support ANSI escape sequences at all. Software such as Ansicon can however act as a wrapper around the standard Win32 console and add support for ANSI escape sequences.

    So I think ANSICON by Jason Hood is your solution. It is written in C, supports 32-bit and 64-bit versions of Windows, and the source is available.

    Also I found some other similar question or post which ultimately have been answered to use ANSICON:

    • How to load ANSI escape codes or get coloured file listing in WinXP cmd shell?
    • how to use ansi.sys in windows 7
    • How can I get cmd.exe to display ANSI color escape sequences?
    • ansi color in windows shells
    • enable ansi colors in windows command prompt
    0 讨论(0)
  • 2020-11-22 04:34

    For Python 2.7 the following script works for me fine with Windows 10 (v1607)

    import os
    
    print '\033[35m'+'color-test'+'\033[39m'+" test end"
    os.system('') #enable VT100 Escape Sequence for WINDOWS 10 Ver. 1607
    print '\033[35m'+'color-test'+'\033[39m'+" test end"
    

    Result should be:

    [35mcolor-test[39m test end
    
    color-test test end
    
    0 讨论(0)
  • 2020-11-22 04:34

    Had the same issue. I installed ConEmu and that one solved my problem.

    0 讨论(0)
  • 2020-11-22 04:40

    Maybe ANSICON can help u

    Just download and extract files, depending on your windows os: 32bit or 64bit

    Install it with: ansicon -i

    0 讨论(0)
提交回复
热议问题