Penyorotan sintaksis di terminal


43

Banyak editor berorientasi pemrograman akan mewarnai kode sumber. Apakah ada perintah yang akan mewarnai kode sumber untuk dilihat di terminal?

Saya dapat membuka file dengan emacs -nw(yang terbuka di terminal alih-alih muncul jendela baru), tapi saya sedang mencari sesuatu yang bekerja seperti less(atau yang bekerja dengan less -R , yang melewati urutan pelarian warna pada inputnya).

Jawaban:


66

Dengan highlightpada terminal yang mendukung urutan pelarian warna yang sama seperti xterm:

highlight -O xterm256 your-file | less -R

Dengan ruby-rouge:

rougify your-file | less -R

Dengan python-pygments:

pygmentize your-file | less -R

Dengan GNUsource-highlight :

source-highlight -f esc256 -i your-file | less -R

Anda juga dapat menggunakan vimpager dengan bantuan macros/less.shskrip yang dikirimkan bersama vim(lihat detail untuk di :h lessdalamnya vim):

Di sistem saya:

sh /usr/share/vim/vim74/macros/less.sh your-file

Atau Anda bisa menggunakan salah satu highlighter sintaks yang mendukung output dan penggunaan HTML elinksatau w3msebagai pager (atau elinks -dump -dump-color-mode 3 | less -R) seperti dengan GNUsource-highlight :

source-highlight -o STDOUT -i your-file | elinks -dump -dump-color-mode 3 | less -R

Sorot dapat mengkonversi teks menjadi SVG / HTML, yang sangat menarik.
utopic eexpress

14

Saya menggunakan GNU source-highlightdikombinasikan dengan less -Rini. Tambahkan baris berikut ke file inisialisasi shell Anda ( ~/.bashrc, misalnya):

cless(){
 LESSOPEN='| source-highlight --failsafe --out-format=esc256 -o STDOUT -i %s 2>/dev/null ' less -R "$@"
}

Itu harus secara otomatis kode sumber warna sesuai dengan bahasa yang digunakan dan, jika tidak bisa, itu akan diluncurkan lesspada inputnya secara langsung.


6

Jika Anda tertarik pada warna secara lesslebih umum, Anda mungkin ingin melihatnya lesspipe.sh. Lihat, misalnya, http://freecode.com/projects/lesspipe .

lesspipe.sh adalah filter input untuk pager kurang seperti yang dijelaskan dalam halaman manual less. Script berjalan di bawah shell yang kompatibel dengan ksh (mis. Bash, zsh) dan memungkinkan Anda menggunakan lebih sedikit untuk melihat file dengan konten biner, file terkompresi, arsip, dan file yang terkandung dalam arsip.

Ini juga akan mewarnai skrip shell, perl skrip, dll. Mirip dengan editor teks, tetapi tanpa menggunakan program "preprocessing" untuk melakukan pewarnaan.


Terima kasih! Saya pikir lesspipe.shadalah apa yang saya coba ingat sebelum saya memposting pertanyaan ...
alexis

2

Saya menikmati kesederhanaan dan saya menggunakan editor teks nano, dalam hal ini saya biasanya melanjutkan sebagai berikut:

periksa sorot sintaks penyihir tersedia: ls -la /usr/share/nano/

memasukkannya ke file nanorc saya dengan perintah berikut, atau dengan melakukannya secara manual

echo 'include /usr/share/nano/sh.nanorc' >> ~/.nanorc

tentang lesssaya sarankan untuk melihat halaman ini


0

Menurut saran Stéphane Chazelas , saya membuat fungsi bash untuk menggunakan highlighthighlight acara Sintaks, memasukkannya ke .bashrc atau lebih. Ini bekerja dengan sangat baik, cepat dan efektif.

s(){ highlight --force -O ansi $1 | /usr/bin/less -R; }

sorot dukungan format 202 bahasa sintaks . lihat highlight --list-scripts=langs.


0

Anda dapat menggunakan paket, e2ansi , yang menyediakan dukungan penyorotan sintaks untuk pager seperti moredan less.

Paket ini menggunakan ibu dari semua editor teks, Emacs , untuk melakukan penyorotan sintaksis yang sebenarnya. Sebagai bonus tambahan, semua konversi lain yang biasanya dilakukan oleh Emacs - seperti file yang tidak dikompresi - juga dilakukan.

Contoh

Berikut ini adalah hasil dari melihat file menggunakan lessdan e2ansi:

Contoh

Konfigurasi

Paket ini menyediakan alat baris perintah e2ansi-catyang memulai Emacs dalam mode batch, membuka file, sintaksis menyoroti mereka, dan merender hasilnya menggunakan urutan ANSI.

Anda dapat mengintegrasikan ini ke dalam lessdengan mengatur variabel-variabel berikut ke, misalnya (lokasi file init Anda dapat bervariasi):

export "LESSOPEN=||-/usr/local/emacs --batch -Q -l ~/.emacs -l bin/e2ansi-cat %s"
export "LESS=-r"
alias "more=less -X -E"

Dalam konfigurasi di atas, lesspulihkan konten jendela terminal yang asli sementara morecukup tampilkan konten baru setelah prompt.

Catatan: Jika Anda menggunakan versi lama less, itu mungkin tidak mendukung ||atau -sintaksis, dalam hal ini Anda mungkin perlu menggunakan secara sederhana LESSOPEN=|/usr/local/emacs ....

Menggunakan lesspipa

Karakter "-" di LESSOPENmenunjukkan bahwa filter input juga harus digunakan saat memipis teks ke less. Dalam hal ini, Emacs hanya bisa mengandalkan teks itu sendiri (dan bukan nama file). Untungnya, Emacs menyediakan sistem untuk ini. Selain itu, file file yang disediakan e2ansi-magic.elmengatur jenis file tambahan. Sebagai contoh:

Contoh pipa

Mengapa menggunakan Emacs?

  • Emacs memiliki dukungan untuk hampir semua bahasa pemrograman dan format teks terstruktur. Dalam kebanyakan kasus, dukungan penyorotan sintaks sangat baik.
  • Anda dapat dengan mudah menambahkan dukungan untuk lebih banyak bahasa dan format, atau memodifikasi paket yang ada sesuai dengan kebutuhan Anda.
  • Emacs mendukung tema warna. Saat menggunakan e2ansi, warna dalam tema dipertahankan saat melihat file less. Anda dapat memilih tema warna yang sesuai dari sejumlah sumber, atau merancang sendiri.
  • Jika Anda menggunakan Emacs sebagai editor pilihan Anda, Anda akan mendapatkan sorotan yang sama di editor seperti yang Anda dapatkan ketika melihat file menggunakan less(minus batasan dalam format urutan ANSI dan jendela terminal).
  • lessakan memanfaatkan fitur Emacs yang melakukan konversi otomatis, misalnya file yang tidak dikompresi. Bahkan, Anda dapat mengajar Emacs untuk melakukan segala jenis konversi seperti secara otomatis mengkonversi file biner ke bentuk yang dapat dibaca manusia menggunakan alat eksternal.
  • Anda dapat melihat file yang terletak di komputer lain dengan menggunakan sintaks Emacs untuk akses jarak jauh seperti /USER@HOST:FILENAME.

Tautan yang bermanfaat

  • e2ansididistribusikan di Melpa dan dapat diinstal menggunakan sistem paket Emacs standar
  • e2ansidi-host di GitHub
  • The e2ansihalaman di Emacs Wiki
  • Rumah dari less.

Catatan sistem operasi

  • Pada MS Windows, konsol tidak secara asli mendukung urutan ANSI. Untungnya, lessaplikasi ini mampu menampilkannya. Saya tidak mengetahui adanya distribusi biner kontemporer lessuntuk MS Windows dan file build yang disediakan sulit digunakan. Untungnya, mudah dibuat lessmenggunakan CMake , lihat teks ini untuk detailnya.

  • OS X mendistribusikan versi kuno less. Untungnya, mudah untuk membangun versi modern langsung dari sumbernya.


-2

Ini disebut penyorotan sintaksis.

Sorotan Sumber GNU ketika diberi file sumber, menghasilkan dokumen dengan penyorotan sintaksis.

Saya menggunakan lessfilterskrip di bawah ini, atau Anda dapat lessmemintanya secara otomatis seperti dengan:

export LESSOPEN="| /path/to/lessfilter %s"
export LESS=' -R '

Saya menemukan artikel ini dan mulai melakukannya dengan cara ini:

#!/bin/sh
file -b -L "$1" | grep -q text &&
  /usr/share/source-highlight/src-hilite-lesspipe.sh "$1"

( src-hilite-lesspipe.shdikirimkan bersama source-highlighttetapi tidak semua distribusi menyertakannya)


4
"Jika Anda pergi ke artikel, penulis harus menggunakan Mac karena ia menggunakan huruf besar untuk perintahnya": Saya khawatir Anda agak bingung: Jelas Anda tidak sadar bahwa exportmendefinisikan variabel lingkungan, bukan alias. The perintah less menggunakan bendera dari variabel lingkungan LESS, sehingga jawaban Anda membutuhkan pekerjaan.
alexis
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.