it-swarm.com.de

Syntaxhervorhebung über Less

gibt es eine Möglichkeit, eine in Less angezeigte Datei syntaktisch hervorzuheben?

eigentlich benutze ich diesen Befehl, um eine XML-Datei (und manchmal eine Reihe von ihnen) zu öffnen.

less htmleditors/htmleditors_config.xml

oder

less [multiple files]

Ich möchte in Less bleiben (um dieses Programm besser zu lernen und mein Wissen über: n und: p für die nächste/vorherige Navigation zu nutzen)

Sie möchte aber auch eine Art grundlegende Syntaxhervorhebung - zumindest die Kommentare anders anzeigen. Kennen Sie eine Möglichkeit, dies zu tun?

130

Sie können GNUs Quell-Highlight verwenden, wie hier gezeigt (Pfad kann unterscheiden, siehe unten):

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

Seit Debian Stretch und Fedora 25 unterscheiden sich Paketnamen und Skriptpfade

  • 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
    
120
brandstaetter

Das Beste aus beiden vorherigen Antworten: Sie können den Systemstandard-Editor aus weniger als einer Minute aufrufen, indem Sie auf drücken v.

91
JiM
pygmentize somefile.ex | less -R

oder

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

Pygementize ist Teil des Pygments Python-Syntax-Highliters .

32
user31752

Ich denke, dass Sie einen Texteditor verwenden sollten. Ich mag vim mich. Das gibt Ihnen viel Kraft beim Anzeigen von Dateien und wenn Sie sie dann bearbeiten möchten, kennen Sie bereits die Grundlagen.

Hier sind einige der Vorteile der Verwendung eines Texteditors (insbesondere von vim):

  • satzstellung markieren
  • leistungsstarke bewegungsbefehle
  • finden
  • zu einer bestimmten Stelle in einer Datei springen (als Markierung bezeichnet)
  • falzen (nützlich, wenn Sie nur Funktionsstummel sehen möchten)

So öffnen Sie Ihre Datei im schreibgeschützten Modus:

vim -R <file name>

Hier ist eine grundlegende Navigationsanleitung:

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

Hier ist ein Link für weitere Informationen:

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

Nur um es noch einmal zusammenzufassen, wenn Sie Unix vim verwenden, ist das ziemlich grundlegend. Ich habe gehört, dass das Lernen von Vim wie das Lernen des Schreibens ist. Es ist das nächstnützlichste Werkzeug, das Sie zum Programmieren lernen können.

(Nur um Editor-Kriege zu vermeiden, könnte man sich auch Emacs oder einen anderen Editor ansehen, allerdings bevorzuge ich persönlich vim)

16

Wie andere gesagt haben, können Sie die Kraft von vim nutzen. Vor allem aber können Sie dies tun, ohne zu lernen, wie man vi/vim verwendet.

Vim wird mit einem less.vim-Skript geliefert, das sich gut als Ersatz für weniger eignet. Die Syntax wird farbig hervorgehoben. Es werden less Tastenkombinationen verwendet (zum Beenden einfach 'q' drücken).

Es hatte ein paar Probleme, also habe ich es verbessert . Hier ist ein Screenshot von meinem Blogeintrag (archiviert am 09.04.2013; original wirft 503):

screenshot of https://github.com/huyz/less.vim

15
huyz

Ich habe auch danach gesucht und mit Vim eine andere Lösung gefunden: http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting- Pager/

Der Beitrag ist ziemlich alt, daher wird ab sofort in neueren Distributionen vim 7.2 ausgeliefert und die .bashrc lautet: alias vless = 'vim -u /usr/share/vim/vim72/macros/less.vim'

10
Lorenzo

Ich bin froh, ein neues Paket ankündigen zu können, e2ansi , das Syntax-Highlighting-Unterstützung für Pager wie bietet more und less.

Das Paket verwendet die Mutter aller Texteditoren Emacs , um die eigentliche Syntaxhervorhebung durchzuführen. Als zusätzlichen Bonus werden auch alle anderen Konvertierungen durchgeführt, die normalerweise von Emacs ausgeführt werden - wie das Dekomprimieren von Dateien.

Beispiel

Das Folgende ist das Ergebnis des Anzeigens einer Datei mit less und e2ansi:

Example

Aufbau

Das Paket enthält ein Befehlszeilentool e2ansi-cat, mit dem Emacs im Batch-Modus gestartet, Dateien geöffnet, syntaktisch hervorgehoben und das Ergebnis mit ANSI-Sequenzen wiedergegeben wird.

Sie können dies in less integrieren, indem Sie beispielsweise die folgenden Variablen auf setzen (der Speicherort Ihrer Init-Datei kann variieren):

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

In der obigen Konfiguration stellt less den ursprünglichen Inhalt des Terminalfensters wieder her, während more nach der Eingabeaufforderung einfach neuen Inhalt ausgibt.

Hinweis: Wenn Sie eine alte Version von less verwenden, unterstützt diese möglicherweise nicht die Syntax || oder -. In diesem Fall müssen Sie möglicherweise einfach LESSOPEN=|/usr/local/emacs ... verwenden.

Verwenden von less in Pipes

Das Zeichen "-" in LESSOPEN gibt an, dass der Eingabefilter auch beim Weiterleiten von Text in less verwendet werden soll. In diesem Fall kann sich Emacs nur auf Text selbst (und nicht auf einen Dateinamen) verlassen. Glücklicherweise bietet Emacs hierfür ein System an. Darüber hinaus werden mit der bereitgestellten Datei file e2ansi-magic.el zusätzliche Dateitypen eingerichtet. Zum Beispiel:

Pipe example

Warum Emacs benutzen?

  • Emacs unterstützt praktisch alle Programmiersprachen und strukturierten Textformate. In den meisten Fällen ist die Syntaxhervorhebungsunterstützung hervorragend.
  • Sie können problemlos Unterstützung für weitere Sprachen und Formate hinzufügen oder vorhandene Pakete an Ihre Bedürfnisse anpassen.
  • Emacs unterstützen Farbthemen. Bei Verwendung von e2ansi bleiben die Farben im Design erhalten, wenn eine Datei in less angezeigt wird. Sie können aus einer Reihe von Quellen ein geeignetes Farbthema auswählen oder ein eigenes entwerfen.
  • Wenn Sie Emacs als Editor Ihrer Wahl verwenden, erhalten Sie im Editor dieselbe Hervorhebung wie beim Anzeigen einer Datei mit less (abzüglich der Einschränkungen im ANSI-Sequenzformat und im Terminalfenster).
  • less nutzt die Emacs-Funktionen, die eine automatische Konvertierung durchführen, z. B. das Dekomprimieren von Dateien. Tatsächlich können Sie Emacs beibringen, jede Art von Konvertierung durchzuführen, beispielsweise die automatische Konvertierung einer Binärdatei in eine für Menschen lesbare Form mithilfe eines externen Tools.
  • Sie können Dateien anzeigen, die sich auf anderen Computern befinden, indem Sie die Emacs-Syntax für den Remotezugriff wie /[email protected]:FILENAME verwenden.

Nützliche Links

  • e2ansi wird auf Melpa verteilt und kann mit dem Standard-Emacs-Paketsystem installiert werden
  • e2ansi wird gehostet auf GitHub
  • Die e2ansi Seite im Emacs Wiki
  • Die Heimat von less .

Hinweise zum Betriebssystem

  • Unter MS Windows unterstützt die Konsole keine ANSI-Sequenzen. Glücklicherweise kann die Anwendung less sie rendern. Mir ist keine aktuelle Binärdistribution von less für MS Windows bekannt, und die bereitgestellten Build-Dateien sind schwer zu verwenden. Glücklicherweise ist es einfach, less mit CMake zu erstellen, siehe diesen Text für Einzelheiten.

  • OS X verteilt eine alte Version von less. Glücklicherweise ist es einfach, eine moderne Version direkt aus dem Quellcode zu erstellen.

8
Lindydancer

Wenn Sie GNU Source-Highlight installiert haben, können Sie den folgenden Befehl verwenden, um die Syntax einer einzelnen Datei hervorzuheben:

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

Unter OS X 10.9 (Maverick) würde dies den Trick machen:

  • brew install source-highlight (Vorausgesetzt, brew ist installiert - http://brew.sh )
  • Sudo nano /etc/launchd.conf

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

    (Zu /etc/launchd.conf hinzufügen)

  • neustarten

2
TeNGiL

In source-highlight befindet sich ein .sh-Skript in /usr/share/source-highlight/*.sh. Ich habe einen symbolischen Link mit dem Namen hcat in /usr/bin erstellt.

Es zeigt hervorgehobene Ausgabe im Terminal (Konsole) - hcat ist hervorgehoben cat.

Gewusst wie:

[[email protected]]<bash><~> 43 
21:23 Fri Apr 19 > Sudo apt-get install source-highlight

[[email protected]]<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*

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

[[email protected]]<bash><~> 36 
21:07 Fri Apr 19 > hcat test.xml
2

Ich habe highlight gefunden, die:

  • Unterstützt mehrere Farbschemata und 256 Farben
  • Funktioniert mit STDIN (im Gegensatz zu source-highlight)
  • Ist viel schneller als pygmentize

Screenshot

Hier ist ein Skript, das ich highlight-less-wrapper nenne und das Anweisungen zum Einrichten von less für die automatische Verwendung von .bashrc enthält.

#!/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 "[email protected]"; 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
0
Tom Hale

In einem Mac kann man einfach view filename eingeben, macht ähnliches wie weniger.

0
Alan Dong

Ich hatte die gleiche Frage und hörte, las alle Antworten und das Folgende tat ich schließlich, um die Syntax jedes Mal hervorzuheben, wenn ich less oder most verwende:

Sudo apt install source-highlight

Dann habe ich einen Alias ​​für meine less und most erstellt (ich verwende ZSH, aber Sie können Aliase für Ihre .bashrc-Datei hinzufügen, wenn Sie bash verwenden):

vim ~/.zshrc

( Für diejenigen, die in vim stecken bleiben könnten: drücken Sie i Um in den Bearbeitungsmodus zu wechseln, drücken Sie, wenn Sie fertig sind Esc dann : dann x und schlussendlich Enter um die Änderungen zu speichern )

Fügen Sie die folgenden Zeilen für Debian-basierte Distributionen (wie Debian, Ubuntu, Mint usw.) ein:

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'

oder für RPM-Distributionen (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'

Denken Sie daran um das Terminal zu schließen und erneut zu öffnen, um sicherzustellen, dass ein Alias ​​erstellt wurde.

Jetzt können Sie die Farben genießen:

most yourFile.xml
0

Wenn Sie dieselbe Syntaxhervorhebung verwenden möchten, die Sie in Vim verwenden, aber aus irgendeinem Grund less als Pager bevorzugen, können Sie das folgende Skript verwenden: https://github.com/rkitover/vimpager

Die grundlegende Verwendung wäre:

vimpager file.txt

oder

vimcat file.ext | less -R

Sie können -c verwenden, um zusätzliche Befehle zu übergeben, die sich nicht in Ihrem .vimrc befinden (z. B. Auswählen eines anderen Farbschemas). Der vollständige Befehl, den ich verwende, lautet:

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

Achtung: Wenn Ihr Vim Sie bittet, beim Start die Eingabetaste zu drücken, wird die Eingabeaufforderung nicht angezeigt, aber es geschieht nichts, bis Sie die Eingabetaste drücken! Der cmdheight-Trick oben kann helfen, das zu mildern.

0
joeytwiddle

Nach der Installation von GNUs Source-Highlight (Paket dev-util/source-highlight auf Sabayon/Gentoo) habe ich diese Envs in /etc/bash/bashrc.d/my-less-src-highlight konfiguriert:

#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

Ich wollte lesspipe nicht ersetzen, weil das andere Eigenschaften hat. Verkettung hat nicht funktioniert.

0
comonad