Sözdizimi Vurgulama Daha Az Yoluyla


133

sözdizimini Daha Az'da gördüğüm bir dosyayı vurgulamanın bir yolu var mı?

Aslında bu komutu bir xml dosyasını açmak için kullanıyorum (ve bazen bir dizi)

less htmleditors/htmleditors_config.xml

veya

less [multiple files]

Less in içinde kalmak istiyorum (bu programı daha iyi öğrenmek ve bilgimi kullanmak için: n ve: sonraki / önceki gezinme için p)

Ancak, aynı zamanda bir çeşit temel sözdizimi vurgulaması istiyor - en azından yorumları farklı şekilde göster. Bunu yapmanın bir yolunu biliyor musun?

Yanıtlar:


123

Burada gösterildiği gibi GNU'nun kaynak vurgusunu kullanabilirsiniz (yol farklı olabilir, aşağıya bakınız):

 export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
 export LESS=' -R '

Debian Stretch ve Fedora 25'ten itibaren, paket adları ve komut dosyası yolları farklı

  • Debian:

    sudo apt install libsource-highlight-common source-highlight
    dpkg -L libsource-highlight-common | grep lesspipe
    # /usr/share/source-highlight/src-hilite-lesspipe.sh
    
  • Fedora:

    sudo dnf install source-highlight
    rpm -ql source-highlight | grep lesspipe
    # /usr/bin/source-highlight/src-hilite-lesspipe.sh
    

Çalıştırdığımda aşağıdaki hata iletisini alıyorum less ~/.zshrc. Hata: src-hilite-lesspipe.sh: line 9: source-highlight: command not found. Bunu MacOSX'te çalıştırıyorum.
JJD

2
@JJD Kaynak vurgunu yüklediniz mi?
Max Nanasy

13
OSX brew install source-highlight:; export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s". Yol değişikliğine dikkat edin.
Gregg Lind

23
Debian üzerinde: sudo apt-get install source-highlight, export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s",export LESS=' -R '
Morgan Courbet

3
küçük uyarı: kaynak vurgusu şu anda etiketlemeyi desteklememektedir.
dhulihan

97

Her iki önceki cevabın en iyisi: tuşuna basarak, sistem varsayılan editörünü daha az içinden çağırabilirsiniz v.


3
Vaov! Bu inanılmaz faydalı!
dancek,

13
Ubuntu kutumda Nano'yu açan lanetler!
jamesc

5
Sonra $ EDITOR veya $ VISUAL öğesini vim (veya emacs, gedit, joe, ed, veya mayınlı veya…) olarak ayarlayın.
Daniel H,

@jamesc FYI, Nano'da sözdizimi vurgulamasını etkinleştirebilirsiniz, işte böyle.
Kaptan Adam,

@ CaptainMan Hayır hayır hayır! Daniel H'nin dediği gibi varsayılanı tekrar vim'e çeviriyorum! : D
jamesc

33
pygmentize somefile.ex | less -R

veya

function cless () {
    pygmentize -f terminal "$1" | less -R
}

Pygmentize Pygments Python sözdizimi highliter'ın bir parçası olarak gelir .


3
pygmentizeAyrıca LESSOPENburada diğer cevaplarda belirtilenlerle de çalışır .
Nathan,

2
Almak için pygmentize, Python ve daha sonra size yükleyebilir pygmentizeile pip install pygments.
wkschwartz

3
Almak için lesskullanmak pygmentizedizim kullanım için: which pygmentize 2> /dev/null >&2 && export LESSOPEN="| pygmentize -g -f terminal256 %s". -gborularla ( less <(diff -u file1 files)) çalışmasını sağlamak için . Bu kullanılabildiğine community/pygmentizeiçin paketin arch linuxve, python-pygmentsiçin debian.
x-yuri

Çıktısını seviyorum pygmentize, ama çok yavaş buldum. Daha hızlı ve hala 256 renkli olan bu cevabı buldum .
Tom Hale

16

Bence bir metin editörü kullanmalısın. Ben kendimi vim severim. Bu, dosyaları görüntülerken size LOTS gücü verecek ve daha sonra bunları düzenlemek istediğinizde zaten temelleri bileceksiniz.

İşte bir metin editörü kullanmanın avantajlarından bazıları (özellikle vim):

  • sözdizimi vurgulama
  • güçlü hareket komutları
  • bulmak
  • bir dosyadaki belirli bir yere atlamak (bir işaret olarak adlandırılır)
  • katlama (sadece fonksiyon çubuklarını görmek istediğinizde faydalıdır)

Dosyanızı salt okunur modda açmak için şunu kullanın:

vim -R <file name>

İşte temel bir gezinme rehberi:

j - move down one line
k - move up one line
h - left one char
l -right one char

ctrl-f - forward one page
ctrl-b - back one page

/<something> - search for something
n - next of whatever you searched for
N - next (search backwards) of whatever you searched for

:q - quit
:q! - quit without saving
:w - save

İşte daha fazla bilgi için bir link:

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

Sadece özetlemek için, eğer unix vim kullanacaksanız oldukça esastır. Vim öğrenmenin yazmayı öğrenmek gibi olduğunu duydum. Programlama için öğrenebileceğiniz bir sonraki en kullanışlı araçtır.

(Sadece editör savaşlarından kaçınmak için emac'lere veya başka bir editöre de bakabilirsiniz, ancak ben şahsen vim'i tercih ederim)


1
Bundan ikinciyim. Vim, en kısa sürede başlatılır ve klavye kısayollarının çoğu (örneğin, arama, sonraki sayfa, önceki sayfa) aynıdır.
Jeremy W. Sherman

10
Sadece FYI, birçok sistemde viewbir takma addır vim -R.
Andrew Ferrier

15

Diğerlerinin dediği gibi vim'in gücünü kullanabilirsiniz. Fakat daha da önemlisi, vi / vim'in nasıl kullanılacağını öğrenmeden bunu yapabilirsiniz.

Vim less.vim, tam renkli sözdizimi vurgulamasıyla daha azının yerine geçecek kadar iyi çalışan bir komut dosyası ile birlikte gelir . lessTuş bağlamalarını kullanır (çıkmak için 'q' tuşuna basmanız yeterli).

Birkaç problemi vardı, ben de geliştirdim . İşte blog yayınımın ekran görüntüsünü gösteriyor (arşivlendi 2013-04-09; orijinal sayı 503):

https://github.com/huyz/less.vim'in ekran görüntüsü


2
Korku veren! Ancak senaryoyu hemen bulamadığım için, onu bulmak için kullanacağımız komutu paylaşmak istiyorum: find /usr/share/vim -name 'less.sh'ki bu alıntıdan
nuala

@ Yoshi'nin yorumuna, hızlıca bir vimlesskomut eklemek için (isimlendirmesini takiben vimdiff), ln -s $(find /usr/share/vim -name 'less.sh') /usr/local/bin/vimless
şunları yapın

Bağlantı 404!
teğmen

@acgtyrant Şimdi düzeltilmeli; İnternet Arşivi çok şükür.
bb010g

10

Bunu da araştırıyordum ve Vim'i kullanarak başka bir çözüm buldum: http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/

Gönderi oldukça eski, yani şimdi daha yeni dağıtımlarda vim 7.2 sevk edildi ve .bashrc okuyacak: takma ad vless = 'vim -u /usr/share/vim/vim72/macros/less.vim'


1
MacVim, doğrudan kullanabileceğiniz bir kabuk betiği ile gelir: /Applications/MacVim.app/Contents/Resources/vim/runtime/macros/less.sh
Nick,

1
Bu özellik Vim'in altında:help less
joeytwiddle

8

Yeni bir paket duyurmaktan memnunum 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.


OS X için, brew paket demeti [ brew.sh/] ile brew dupes [ github.com/Homebrew/homebrew-dupes] gibi şeylerin güncel versiyonlarını kurmak için kullanmanızı öneririmless .
drevicko

"emacs tarafından desteklenmektedir" - sadece bir dosyaya bakmak için tüm VM'yi çalıştırıyor musunuz? ;-) ve +1
Alois Mahdal

6

Eğer varsa , GNU Kaynak-vurgulamak yüklü tek bir dosyanın sözdizimi vurgulamak için aşağıdaki komutu kullanabilirsiniz:

$ src-hilite-lesspipe.sh yourfile.xml | less -R

Can src-hilite-lesspipe.shyanı bir boru vasıtasıyla girişi alabilir?
waldyrious

2

source-highlightiçinde bir .shkomut dosyası var /usr/share/source-highlight/*.sh. İsmi hcatolan sembolik bir bağlantı oluşturdum /usr/bin.

Terminalde (konsolda) vurgulanmış çıkışı gösterir - hcatvurgulanır kedi.

Nasıl:

[me@this]<bash><~> 43 
21:23 Fri Apr 19 > sudo apt-get install source-highlight

[me@this]<bash><~> 28 
21:03 Fri Apr 19 > ll /usr/share/source-highlight/*.sh
-rwxr-xr-x 1 root root 432 May  1  2012 /usr/share/source-highlight/src-hilite-lesspipe.sh*

[me@this]<bash><~> 29 
21:04 Fri Apr 19 > sudo su
root@this:/home/me# cd /usr/bin/
root@this:/usr/bin# ln -s /usr/share/source-highlight/src-hilite-lesspipe.sh hcat

[me@this]<bash><~> 36 
21:07 Fri Apr 19 > hcat test.xml

2

OS X 10.9 (Maverick) kullanarak bu işe yaramaz:

  • demlemek yükleme kaynak vurgulamak (demlemek yüklü olduğunu varsayarak - http://brew.sh )
  • sudo nano /etc/launchd.conf

    setenv LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"     
    setenv LESS=' -R '
    

    (/Etc/launchd.conf dosyasına ekleyin)

  • reboot


0

Mac'te, sadece yazabilirsiniz view filename, daha az benzer bir şey yapar.


1
OSX ile, view filenamesadece vimvarsayılan olarak başlatılır - için biraz farklı anahtar bağlantıları less(daha fazla ayrıntı için bu sorunun diğer cevaplarına bakın).
drevicko

0

GNU’nun kaynak kodunu yükledikten sonra ( dev-util/source-highlightsabayon / gentoo’da paket ), şu envs’leri şu şekilde yapılandırdım /etc/bash/bashrc.d/my-less-src-highlight:

#default:    export LESSOPEN="|lesspipe %s"
#don't like: export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
#default:    export LESS=" -R -M --shift 5"
export LESSCOLOR=always
export LESSCOLORIZER=/usr/bin/src-hilite-lesspipe.sh

lesspipeBaşka özelliklere sahip olduğu için değiştirmek istemedim . Birleştirme işe yaramadı.


0

İsterseniz siz Vim kullanmak vurgulayarak aynı sözdizimi , ama nedense kullanmayı tercih less: çağrı cihazı olarak, bu komut dosyasını kullanabilirsiniz https://github.com/rkitover/vimpager

Temel kullanım:

vimpager file.txt

veya

vimcat file.ext | less -R

Sizde -colmayan ekstra komutları geçmek için kullanabilirsiniz .vimrc(örneğin farklı bir renk düzeni seçme). Kullandığım tam komut:

vimcat -c 'set cmdheight=20' -c 'hi! clear Normal' -o - "$FILENAME" | less -REXS

Dikkat: Vim'iniz başladığında Enter tuşuna basmanızı isterse, istemi görmezsiniz, ancak Enter tuşuna basana kadar hiçbir şey olmaz! Yukarıdaki cmdheightnumara, bunu hafifletmeye yardımcı olabilir.


0

highlightHangisini buldum :

  • Çoklu renk şemalarını ve 256 rengi destekler
  • STDIN üzerinde çalışır (aksine source-highlight)
  • Çok daha hızlı pygmentize

Ekran görüntüsü

İşte çağırdığım bir komut dosyası , otomatik olarak kullanmak için nasıl kurulacağına dair talimatları highlight-less-wrapperiçeren bir komut dosyası ..bashrcless

#!/bin/bash

# Have highlight read from STDIN if '-' is given as filename

# Setup - Add to .bashrc:
# LESSOPEN='|-highlight-less-wrapper "%s"'
# export LESS=-FMRXis

# Usage:
# $ less file
# OR
# $ pipeline | less

warn () { printf "%s: %s\n" "$(basename "$0")" "$*" 1>&2; }
die () { warn "$@"; exit 1; }

# Argument checking
case $# in
    0)
        # Allow `exec $0` for less setup
        echo "LESSOPEN='|-$(readlink -f "$0") "'"%s"'\'
        exit 255 ;;
    1)
        # Only one argument is expected.
        # less will invoke multiple times given multiple files.
        file=$1
        if [[ $file != - && ! -r $file ]]; then  # less passes '-' for STDIN
            die "Cannot open $file for reading"
        fi ;;
    *)
        die "Expected only one argument" ;;
esac

# Run highlight
# highlight will read from STDIN when given a null filename
run_highlight () {
    highlight --force -O truecolor --style aiseered "$1"
}

if [[ $file == - ]]; then  # Run on stdin
    run_highlight ""
else
    run_highlight "$file"
fi

“Github şimdi Mordor Corp'un bir parçası olduğundan, Git repo'nun öne çıkan özelliği vurgulandı” İlgilendi, ama artık 90'ların artık büyümesi gereken bir şey değil.
Urda

0

Ben aynı soru vardı ve ben bütün cevapları, duymak indi okumak ve aşağıdaki Sonunda dizim kullandığım her şey var bunları yaptık lessya most:

sudo apt install source-highlight

Sonra gittim ve bir takma ad oluşturdum lessve most(ZSH kullanıyorum, fakat .bashrcbash kullanıyorsanız dosyanız için takma ad ekleyebilirsiniz ):

vim ~/.zshrc

( Vim takılıp olabilir olanlar için: basın ibunlar basına bittiğinde, düzenleme moduna gitmek için Esco zaman :o zaman xve nihayet Enterdeğişiklikleri kaydetmek için )

Ve aşağıdaki satırları debian tabanlı dağıtımlar (Debian, Ubuntu, Mint, vb.) İçin yapıştırın:

alias most='AliasFuncLess() { unset -f AliasFuncLess; $(dpkg -L libsource-highlight-common | grep lesspipe) "$1" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(dpkg -L libsource-highlight-common | grep lesspipe) "$1" | most };AliasFuncMost'

veya RPM dağıtımları için (Redhat, Fedora, Centos):

alias most='AliasFuncLess() { unset -f AliasFuncLess; $(rpm -ql source-highlight | grep lesspipe) "$1" | less -R };AliasFuncLess'
alias most='AliasFuncMost() { unset -f AliasFuncMost; $(rpm -ql source-highlight | grep lesspipe) "$1" | most };AliasFuncMost'

Diğer adı oluşturulduğundan emin olmak için terminali kapatmayı ve tekrar açmayı unutmayın .

Artık renklerin tadını çıkarabilirsiniz:

most yourFile.xml
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.