Terminalde sözdizimi vurgulama


43

Programlamaya yönelik editörlerin çoğu kaynak kodunu renklendirecek. Terminalde görüntülemek için kaynak kodunu renklendirecek bir komut var mı?

Ben bir dosyayı açabilir emacs -nw(yerine yeni pencere haşhaş terminali açılır), ama bir şey arıyorum böyle işler less(veya bu işler ile less -R kendi girişteki renk kaçış dizileri geçer).

Yanıtlar:


66

İle highlightaynı renk çıkış sırasını destekleyen bir terminalde xterm:

highlight -O xterm256 your-file | less -R

İle ruby-rouge:

rougify your-file | less -R

İle python-pygments:

pygmentize your-file | less -R

İle GNUsource-highlight :

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

Ayrıca kullanabilirsiniz vimyardımıyla bir çağrı cihazı olarak macros/less.shsevk komut vim(bkz :h lessiçindeki vimdetaylar için):

Sistemimde:

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

Veya, HTML çıktısını destekleyen ve GNU ile olduğu gibi çağrı cihazı (veya ) kullanan elinksya w3mda kullandığınız sözdizimi vurgulayıcılarından herhangi birini kullanabilirsiniz :elinks -dump -dump-color-mode 3 | less -Rsource-highlight

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

Vurgu, metni çok heyecan verici olan SVG / HTML'ye dönüştürebilir.
ütopik,

14

Bunun için GNU source-highlightile birlikte kullanıyorum less -R. Kabuğunuzun başlangıç ​​dosyasına şu satırları ekleyin ( ~/.bashrcörneğin,):

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

Kaynak kodu otomatik olarak kullanılan dile göre renklendirmeli ve eğer başaramazsa lessdoğrudan girişine başlayacaktır .


6

lessDaha genel olarak renklerle ilgileniyorsanız, bakmak isteyebilirsiniz lesspipe.sh. Örneğin, http://freecode.com/projects/lesspipe adresini ziyaret edin .

lesspipe.sh, çağrı cihazı için, daha azının man sayfasında açıklandığı gibi daha az bir giriş filtresidir. Betik ksh uyumlu bir kabuk altında çalışır (örneğin bash, zsh) ve ikili içerikli, sıkıştırılmış dosyalar, arşivler ve arşivlerde bulunan dosyaları görüntülemek için daha az kullanmanıza izin verir.

Aynı zamanda kabuk metinlerini, perl komut dosyalarını vb. Bir metin editörüne benzer şekilde renklendirir, ancak renklendirme yapmak için herhangi bir "ön işleme" programı kullanmadan.


Teşekkürler! Sanırım lesspipe.shsoruyu yayınlamadan önce hatırlamaya çalıştığım şey ...
alexis

2

Sadelikten zevk alıyorum ve nano text editor kullanıyorum, bu durumda genellikle şu şekilde devam ediyorum:

cadı sözdizimi vurgulamak kullanılabilir olup olmadığını kontrol edin: ls -la /usr/share/nano/

nanorc dosyama aşağıdaki komutu kullanarak veya el ile yaparak

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

hakkında bu sayfayaless bir göz atmanızı öneririm


0

Göre Stéphane Chazelas öneri, ben kullanım için bash işlevini yapmak highlight.bashrc içine kadar üzerine koydu, gösteri dizimi vurgulamak. Harika, hızlı ve etkili çalışıyor.

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

destek 202 dil sözdizimi formatını vurgulayın . bkz highlight --list-scripts=langs.


0

Paketin kullanabilirsiniz e2ansi gibi çağrı cihazları için sözdizimi vurgulama desteği sağlar, moreve less.

Paket , gerçek sözdizimi vurgulamasını gerçekleştirmek için tüm metin editörlerinin anası Emacs'ı kullanır. Ek bir bonus olarak, normal olarak Emacs tarafından - sıkıştırılmış dosyalar gibi - gerçekleştirilen tüm diğer dönüşümler de gerçekleştirilir.

Örnek

Aşağıdakiler lessve kullanarak bir dosyayı görüntülemenin sonucudur e2ansi:

Örnek

Yapılandırma

Paket, e2ansi-catEmacs'i toplu modda başlatan, dosyaları açan, sözdizimi ile vurgulayan ve ANSI dizilerini kullanarak sonucu veren bir komut satırı aracı sağlar .

Bunu, lessörneğin (init dosyanızın konumu değişebilir) aşağıdaki değişkenleri ayarlayarak bütünleştirebilirsiniz :

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

Yukarıdaki konfigürasyonda less, orijinal terminal penceresi içeriğini geri yüklerken more, komut isteminden sonra sadece yeni içeriği çıkarır.

Not: Eski bir sürümünü kullanıyorsanız , sözdizimini veya sözdizimini lessdesteklemeyebilir, bu durumda basitçe kullanmanız gerekebilir .||-LESSOPEN=|/usr/local/emacs ...

lessBorularda kullanmak

İçindeki "-" karakteri, LESSOPENmetin girerken giriş filtresinin de kullanılması gerektiğini gösterir less. Bu durumda, Emacs yalnızca metnin kendisine (ve bir dosya adına değil) güvenebilir. Neyse ki, Emacs bunun için bir sistem sağlar. Ek olarak, verilen dosya dosyası e2ansi-magic.elek dosya türleri oluşturur. Örneğin:

Boru örneği

Neden Emacs kullanılmalı?

  • Emacs hemen hemen tüm programlama dillerini ve yapılandırılmış metin formatlarını destekler. Çoğu durumda, sözdizimi vurgulama desteği mükemmeldir.
  • Daha fazla dil ve format için kolayca destek ekleyebilir veya mevcut paketleri gereksinimlerinize göre değiştirebilirsiniz.
  • Emacs, renk temalarını destekler. Kullanırken e2ansi, bir dosyayı görüntülerken temadaki renkler korunur less. Çeşitli kaynaklardan uygun bir renk teması seçebilir veya kendinizinkini tasarlayabilirsiniz.
  • Seçim editörünüz olarak Emacs kullanıyorsanız, bir dosyayı kullanırken less(ANSI dizisi biçiminde ve terminal penceresinde eksi sınırlamalar) kullanarak bir dosyayı görüntülerken, editörde aynı vurguyu alırsınız .
  • lessSıkıştırılmış dosyalar gibi otomatik dönüştürme işlemini gerçekleştiren Emacs özelliklerinden yararlanacaktır. Aslında, Emacs'a harici bir araç kullanarak bir ikili dosyayı otomatik olarak insan tarafından okunabilir forma dönüştürmek gibi her türlü dönüşümü gerçekleştirmeyi öğretebilirsiniz.
  • Diğer makinelerde bulunan dosyaları, uzaktan erişim için Emacs'in sözdizimini kullanarak görüntüleyebilirsiniz /USER@HOST:FILENAME.

Kullanışlı bağlantılar

  • e2ansiMelpa'da dağıtılmaktadır ve standart Emacs paket sistemi kullanılarak kurulabilir
  • e2ansiGitHub'da barındırılıyor
  • e2ansiSayfa Emacs Wiki
  • Evi less.

İşletim sistemi notları

  • MS Windows'ta, konsol doğal olarak ANSI dizilerini desteklemez. Neyse ki, lessuygulama onları işleme yeteneğine sahiptir. lessMS Windows için herhangi bir çağdaş ikili dağıtımın farkında değilim ve sağlanan derleme dosyalarının kullanımı zor. Neyse ki, CMakeless kullanarak inşa etmek kolaydır , ayrıntılar için bu metne bakın.

  • OS X eski bir sürümünü dağıtır less. Neyse ki, doğrudan kaynaktan modern bir sürüm oluşturmak kolaydır.


-2

Buna sözdizimi vurgulama denir.

Bir kaynak dosya verildiğinde GNU Source-vurgu , sözdizimi vurgulayan bir belge oluşturur.

lessfilterAşağıdaki betiği kullanıyorum , ya da aşağıdaki lessgibi otomatik olarak çağırmasını sağlayabilirsiniz :

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

Bu makaleyi buldum ve bu şekilde yapmaya başladım:

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

( src-hilite-lesspipe.shsevk edilir source-highlightancak tüm dağıtımlar dahil değildir)


4
"Makaleye giderseniz, yazarın komutları için büyük harf kullandığı için bir Mac kullanıyor olması gerekir": Korkarım ki biraz kafanız karıştı: Açıkçası exportbir takma adı değil, bir ortam değişkenini tanımladığının farkında değilsiniz. Komut less ortam değişkeni gelen bayrakları kullanan LESSCevabınız bazı iş böylece.
alexis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.