Bagaimana cara membuat warna tampilan Vim seperti yang ditunjukkan oleh kode warna?
61
Singkatnya, saya dalam upaya untuk mengganti lessdengan vim( vimpager). Saya memiliki pengaturan untuk skrip untuk memuntahkan warna (dan tebal dan semuanya bagus) kapan saja mereka bisa. lessmemahami kode warna dan menampilkannya dengan baik. Bagaimana saya bisa membuat vimparsing kode dan menampilkan warna / keberanian seperti yang lessdilakukan?
Yang singkat: Anda ingin menggunakan skrip vim AnsiEsc.vim . Ini akan menyembunyikan urutan pelarian ANSI yang sebenarnya dalam file Anda, dan menggunakan penyorotan sintaks untuk mewarnai teks dengan tepat. Masalah dengan menggunakan ini dalam pager adalah Anda harus membuat vim mengenali kapan harus menggunakan ini. Saya tidak yakin apakah Anda selalu dapat memuatnya, atau apakah itu akan bertentangan dengan file sintaks lainnya. Anda harus bereksperimen dengannya.
Sebuah jawaban panjang: Yang terbaik yang dapat Anda harapkan adalah solusi parsial non-portabel. Kurang benar-benar tidak memahami urutan pelarian terminal, karena ini sebagian besar tergantung terminal, tetapi sedikit yang bisa mengenali (subset dari) ini, dan akan tahu untuk meneruskannya ke terminal, jika Anda menggunakan -r(atau-R) pilihan. Terminal akan menginterpretasikan urutan keluar dan mengubah atribut teks (warna, tebal, garis bawah ...). Vim, menjadi editor daripada pager, tidak hanya meneruskan karakter kontrol mentah ke terminal. Perlu menampilkannya dalam beberapa cara, sehingga Anda benar-benar dapat mengeditnya. Anda dapat menggunakan fitur vim lainnya, seperti penyembunyian penyembunyian dan sintaks untuk menyembunyikan urutan dan menggunakannya untuk mengatur warna teks, namun, ia akan selalu menangani hanya sebagian dari urutan terminal, dan mungkin tidak akan bekerja pada beberapa terminal .
Ini benar-benar hanya satu dari banyak masalah yang akan Anda hadapi ketika Anda mencoba menggunakan editor teks sebagai pager.
Sekarang dengan vim 8 Anda dapat menggunakan mode terminal :terminaldan kemudian di terminal itu lakukan cat myfiledan kembali ke mode normal dengan Ctrl-w N. Ini akan menampilkan kode warna ANSI dengan benar. Dengan mengotomatiskan langkah-langkah ini dan membaca dari input standar alih-alih file, harus dimungkinkan untuk menggunakan vim untuk mengganti lebih sedikit.
Itu sama sekali tidak menjawab pertanyaan. Bagaimana cara mengganti ini less?
ossbuntu
@ossbuntu Jika Anda menjalankan ls --color=always >/tmp/colored.txtdan kemudian di vim :terminal cat /tmp/colored.txtdiikuti oleh :only, maka Anda akan memiliki output ls berwarna vim seperti yang kurang akan dilakukan. Ketika vim mendukung perintah lewat sebagai argumen baris perintah pada startup, jelas mungkin untuk bermain-main untuk membuat solusi itu berfungsi untuk menggantikan less:)
less -r FILE
( sumber )Sekarang dengan vim 8 Anda dapat menggunakan mode terminal
:terminal
dan kemudian di terminal itu lakukancat myfile
dan kembali ke mode normal dengan Ctrl-w N. Ini akan menampilkan kode warna ANSI dengan benar. Dengan mengotomatiskan langkah-langkah ini dan membaca dari input standar alih-alih file, harus dimungkinkan untuk menggunakan vim untuk mengganti lebih sedikit.sumber
less
?ls --color=always >/tmp/colored.txt
dan kemudian di vim:terminal cat /tmp/colored.txt
diikuti oleh:only
, maka Anda akan memiliki output ls berwarna vim seperti yang kurang akan dilakukan. Ketika vim mendukung perintah lewat sebagai argumen baris perintah pada startup, jelas mungkin untuk bermain-main untuk membuat solusi itu berfungsi untuk menggantikanless
:)