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?

phhehehe
sumber

Jawaban:

45

Dua jawaban:

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.

Jan Hlavacek
sumber
Singkatnya, Anda harus menulis bagian dari emulator terminal di Vim, bagian yang menangani urutan pelarian terminal yang ada di input Anda.
Gilles 'SO- berhenti bersikap jahat'
Terima kasih, saya pikir saya menyerah. Jika tidak mudah, itu tidak masuk akal lagi.
phunehehe
1
@JanHlavacek tautan rusak :(
Nitrodist
19
@Nitrodist: less -r FILE( sumber )
Adobe
1
Tampaknya tautan Jan telah pindah ke linux-tips.com/t/how-to-enable-syntax-highlighting-in-less/208
Timothy Zorn
2

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.

rubystallion
sumber
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:)
rubystallion