Lebih
Cara membuat konsol win32 mengenali ANSI/VT100 escape sequences?
I'm bangunan versi ringan dari ncurses perpustakaan. Sejauh ini, ia bekerja cukup baik dengan VT100-terminal yang kompatibel, tapi konsol win32 gagal untuk mengenali \033
kode sebagai awal dari urutan escape:
# include <stdio.h>
# include "term.h"
int main(void) {
puts(BOLD COLOR(FG, RED) "Bold text" NOT_BOLD " is cool!" CLEAR);
return 0;
}
Apa yang perlu dilakukan pada kode C tingkat, agar ANSI.SYS sopir dimuat dan ANSI/VT100 escape sequences diakui?
57
13
[UPDATE] Untuk terbaru Windows 10 silahkan baca kontribusi yang bermanfaat oleh @brainslugs83, hanya di bawah ini di komentar untuk jawaban ini.
Sementara untuk versi sebelum
Windows 10 Ulang tahun Update
:ANSI.SYS memiliki pembatasan yang dapat dijalankan hanya dalam konteks MS-DOS sub-sistem di dalam Windows 95-Vista.
Microsoft KB101875 menjelaskan cara mengaktifkan ANSI.SYS di jendela perintah, tapi itu tidak berlaku untuk Windows NT. Menurut artikel di bawah ini: kita semua cinta warna, versi modern dari Windows tidak memiliki ini bagus ANSI dukungan.
Sebagai gantinya, Microsoft menciptakan banyak fungsi, tapi ini jauh dari kebutuhan anda untuk mengoperasikan ANSI/VT100 escape sequence.
Untuk penjelasan lebih rinci, lihat Wikipedia:
Jadi saya pikir ANSICON oleh Jason Hood adalah solusi anda. Hal ini ditulis dalam C, mendukung 32-bit dan 64-bit versi Windows, dan sumber.
Saya juga menemukan beberapa pertanyaan serupa atau posting yang akhirnya telah dijawab dengan menggunakan ANSICON:
Mulai dari Windows 10 TH2 (v1511),
conhost.exe
dancmd.exe
dukungan ANSI dan VT100 Escape Sequences keluar dari kotak (meskipun [mereka harus diaktifkan][1]).Lihat jawaban saya di atas superuser untuk informasi lebih lanjut.
[1]: https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v=vs. 85).aspx
Mulai dari Windows 10, anda dapat menggunakan
ENABLE_VIRTUAL_TERMINAL_PROCESSING
untuk mengaktifkan ANSI escape sequences:https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v=vs. 85).aspx
Untuk Python 2.7 berikut script ini bekerja untuk saya baik-baik saja dengan Windows 10 (v1607)
Hasilnya harus:
Jika ANSICON tidak dapat diterima karena tidak mengharuskan anda untuk menginstal sesuatu di sistem, yang lebih ringan solusi yang mem-parsing dan menerjemahkan kode ANSI menjadi relevan [Win32 API konsol fungsi][1] seperti SetConsoleTextAttribute.
https://github.com/mattn/ansicolor-w32.c
[1]: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682073(v=vs. 85).aspx
Untuk mewarnai cmd anda perlu
Windows.h
dan menggunakanSetConsoleTextAttribute()
rincian lebih lanjut dapat ditemukan di http://msdn.microsoft.com/en-us/library/windows/desktop/ms686047%28v=vs.85%29.aspxDasar pada @BrainSlugs83 anda dapat mengaktifkan pada saat ini Windows 10 versi via daftarkan, dengan baris perintah ini:
Saya pribadi suka penjara. Tidak hanya proses ANSI kode, ia juga menambahkan banyak fitur-fitur lainnya sehingga Jendela Konsol berperilaku seperti bash (sejarah, membalikkan sejarah pencarian, cara pintas keyboard, dll.):
Ansi.sys (di system32) adalah sebuah "MSDOS driver" yang disediakan sebagai bagian dari Windows XP, 2000, dan versi sebelumnya dari NT. Pada tahun 2000 dan XP, hal ini terletak di system32 (I don't ingat struktur dari versi sebelumnya NT). Program-program yang berjalan di DOS subsystem dan menggunakan standar output dapat menggunakan ANSI.SYS hanya karena mereka bisa menjalankan lebih dari MSDOS.
Untuk beban ansi.sys anda harus menggunakan perangkat= atau devicehigh= perintah di config, sama seperti anda akan di MSDOS. Pada Windows NT 5 (2K & XP), setiap salinan dari DOS subsistem dapat diberikan sebuah file konfigurasi terpisah di pif/shortcut (gunakan "maju" tombol), dan ada file default yang disebut KONFIGURASI.NT (juga di system32), yang digunakan jika pif/shortcut tidak menentukan khusus config file.
Ketika ansi.sys dimuat dengan benar, mem /d laporan yang dimuat. Pada versi sebelumnya dari NT, anda dapat dan harus memuat tepat DOS lingkungan untuk beban ansi.sys, dan ansi seni akan bekerja pada prompt. Di Win 2K dan XP, loading ansi.sys tidak akan berpengaruh pada anda "CMD prompt" karena CMD bukan program DOS: ini adalah 32 bit Windows console program. Untuk beberapa alasan yang saya tidak mengerti, pada WinXP, bahkan jika anda memuat tetap salinan command.com menggunakan "command.com /p", command prompt tidak akan ansi diaktifkan: mungkin ketika anda melakukannya dengan cara itu hanya mengemulasi loading command.com?
Dalam kasus apapun, ketika anda menggunakan aplikasi yang sebenarnya DOS versi command.com, ansi adalah diaktifkan setelah dimuat: anda dapat menunjukkan itu's digunakan dengan sedikit ansi seni seperti ini:
(berikut adalah contoh: http://artscene.textfiles.com/ansi/artwork/beastie.ans)
CONFIG.NT (di system32) berisi contoh sintaks untuk memuat driver perangkat. Anda akan perlu untuk menjadi Administrator untuk mengedit file default, atau anda dapat membuat salinan itu.
Di Win 2K dan XP, default "shortcut" untuk MSDOS adalah .PIF file, bukan .LNK file. Jika anda membuat .lnk file dengan CMD, anda memenangkan't dapat diatur khusus config dan file autoexec, ia akan menggunakan KONFIGURASI default.NT. Jika anda ingin menggunakan file konfigurasi untuk aplikasi DOS, anda dapat membuat salinan dari "MSDOS shortcut", atau anda dapat membuat salinan dari "_default.pif", yang ditemukan dalam folder Windows anda.
Dalam amandemen win10, hal ini dapat dilakukan dengan
SetConsoleMode(originMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING)
. Lihat https://docs.microsoft.com/en-us/windows/console/console-virtual-terminal-sequences#exampleMungkin ANSICON dapat membantu u
Hanya men-download dan ekstrak file, tergantung pada os windows anda: 32bit atau 64bit
Menginstalnya dengan:
ansicon -aku
Saya menemukan alat ini akan bekerja untuk akhir saya. Microsoft Warna Alat dari GitHub
Unzip file terkompresi kemudian buka CMD dengan Pemberian izin.
Pergi ke folder dimana anda meng-unzip file di CMD.
Kemudian jalankan perintah ini "
colortool -b skema-nama
"Skema-nama perlu diganti dengan salah satu dari pilihan di bawah ini:
Dalam kasus saya, perintah akan seperti ini "
colortool -b solarized_dark.itermcolors
"Klik kanan pada jendela konsol dan pilih Properties.
Anda don't perlu mengubah apapun nilai klik "OK" untuk menyimpan pengaturan. (Anda akan melihat bahwa font anda sudah mengandung warna).
Console Properti
Kemudian restart cmd atau powerShell.
ANSI warna harus diaktifkan dan bekerja dengan skema warna yang anda pilih sebelumnya.
Memiliki masalah yang sama. Saya telah menginstal ConEmu dan salah satu yang memecahkan masalah saya.