web-dev-qa-db-fra.com

Comment mettre en évidence la syntaxe via Less

existe-t-il un moyen de mettre en surbrillance un fichier que je vois dans Less?

en fait, j'utilise cette commande pour ouvrir un fichier xml (et parfois une série d'entre eux)

less htmleditors/htmleditors_config.xml

ou

less [multiple files]

J'aimerais rester dans Less (pour mieux apprendre ce programme et utiliser mes connaissances de: n et: p pour la navigation suivante/précédente)

Mais il souhaite également une sorte de mise en évidence de la syntaxe de base - au moins afficher les commentaires différemment. Savez-vous un moyen de le faire?

128

Vous pouvez utiliser la source en surbrillance de GNU , comme indiqué ici (le chemin peut être différent, voir ci-dessous):

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

Depuis Debian Stretch et Fedora 25, les noms de paquet et les chemins de script diffèrent

  • Debian:

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

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

La meilleure des deux réponses précédentes: vous pouvez appeler l'éditeur par défaut du système depuis moins, en appuyant sur v.

91
JiM
pygmentize somefile.ex | less -R

ou

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

Pygmentize fait partie de Pygments Python syntax highliter .

32
user31752

Je pense que vous devriez utiliser un éditeur de texte. J'aime vim moi-même. Cela vous donnera BEAUCOUP de puissance lors de la visualisation de fichiers et, lorsque vous souhaitez les modifier, vous connaissez déjà les bases.

Voici certains des avantages de l’utilisation d’un éditeur de texte (notamment vim):

  • mise en évidence de la syntaxe
  • puissantes commandes de mouvement
  • trouver
  • sauter à un emplacement spécifique dans un fichier (appelé une marque)
  • replier (utile lorsque vous voulez juste voir la fonction stubbs)

Pour ouvrir votre fichier en mode lecture seule, utilisez ceci:

vim -R <file name>

Voici un guide de navigation de base:

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

Voici un lien pour plus d'informations:

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

Pour récapituler, si vous voulez utiliser Unix, vim est assez fondamental. J'ai entendu dire qu'apprendre vim, c'est comme apprendre à taper. C'est l'outil suivant le plus utile que vous puissiez apprendre pour la programmation.

(Juste pour éviter les guerres entre rédacteurs, vous pouvez également consulter emacs ou un autre rédacteur, mais je personnellement préfère vim)

16
sixtyfootersdude

Comme d’autres l’ont dit, vous pouvez utiliser le pouvoir de vim. Mais surtout, vous pouvez le faire sans apprendre à utiliser vi/vim.

Vim est livré avec un script less.vim qui fonctionne plutôt bien pour remplacer moins cher, avec une coloration syntaxique complète. Il utilise less keybindings (il suffit d'appuyer sur 'q' pour quitter).

Il a eu quelques problèmes, donc je l’ai amélioré . Voici une capture d'écran de mon article de blog à ce sujet (archivé le 2013-04-09; original lance 503):

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

15
huyz

Je recherchais également cela et trouvais une autre solution en utilisant Vim: http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlightinging-pager/

La publication étant plutôt ancienne, vim 7.2 est désormais disponible dans des distributions plus récentes et le .bashrc se lit comme suit: alias vless = 'vim -u /usr/share/vim/vim72/macros/less.vim'

10
Lorenzo

Je suis heureux d’annoncer un nouveau package, e2ansi , qui prend en charge la coloration syntaxique pour les pagers tels que more et less.

Le paquet utilise la mère de tous les éditeurs de texte, Emacs , pour effectuer la mise en évidence de la syntaxe. En prime, toutes les autres conversions normalement effectuées par Emacs, telles que la décompression de fichiers, sont également effectuées.

Exemple

Voici le résultat de l'affichage d'un fichier à l'aide de less et e2ansi:

Example

Configuration

Le package fournit un outil de ligne de commande e2ansi-cat qui démarre Emacs en mode de traitement par lots, ouvre les fichiers, les met en évidence par la syntaxe et affiche le résultat à l'aide de séquences ANSI.

Vous pouvez l'intégrer à less en définissant les variables suivantes sur, par exemple (l'emplacement de votre fichier init peut varier):

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

Dans la configuration ci-dessus, less restaure le contenu d'origine de la fenêtre du terminal, alors que more affiche simplement le nouveau contenu après l'invite.

Remarque: Si vous utilisez une ancienne version de less, il est possible que celle-ci ne prenne pas en charge la syntaxe || ou -. Dans ce cas, vous devrez peut-être utiliser simplement LESSOPEN=|/usr/local/emacs ....

Utiliser less dans les tuyaux

Le caractère "-" dans LESSOPEN indique que le filtre d'entrée doit également être utilisé lors du transfert de texte dans less. Dans ce cas, Emacs ne peut compter que sur le texte lui-même (et non sur un nom de fichier). Heureusement, Emacs fournit un système pour cela. De plus, le fichier fichier e2ansi-magic.el définit des types de fichiers supplémentaires. Par exemple:

Pipe example

Pourquoi utiliser Emacs?

  • Emacs prend en charge pratiquement tous les langages de programmation et les formats de texte structuré. Dans la plupart des cas, la prise en charge de la syntaxe est excellente.
  • Vous pouvez facilement ajouter un support pour plus de langues et de formats, ou modifier des packages existants pour répondre à vos besoins.
  • Emacs supporte les thèmes de couleurs. Lorsque vous utilisez e2ansi, les couleurs du thème sont préservées lors de la visualisation d'un fichier dans less. Vous pouvez choisir un thème de couleur approprié dans un certain nombre de sources ou concevoir le vôtre.
  • Si vous utilisez Emacs comme éditeur de choix, vous obtiendrez la même surbrillance dans l'éditeur que lorsque vous visualisez un fichier à l'aide de less (limitations moins du format de séquence ANSI et de la fenêtre du terminal).
  • less tirera parti des fonctionnalités d’Emacs qui effectuent une conversion automatique, par exemple la décompression de fichiers. En fait, vous pouvez apprendre à Emacs à effectuer tout type de conversion, par exemple à convertir automatiquement un fichier binaire en une forme lisible par un humain à l'aide d'un outil externe.
  • Vous pouvez afficher les fichiers situés sur d'autres machines à l'aide de la syntaxe d'Emacs pour l'accès à distance, telle que /USER@Host:FILENAME.

Liens utiles

  • e2ansi est distribué sur Melpa et peut être installé à l'aide du système de paquetage Emacs standard
  • e2ansi est hébergé sur GitHub
  • La page e2ansi du Emacs Wiki
  • La maison de less .

Notes sur le système d'exploitation

  • Sur MS Windows, la console ne prend pas nativement en charge les séquences ANSI. Heureusement, l'application less est capable de les rendre. Je ne suis au courant d'aucune distribution binaire contemporaine de less pour MS Windows et les fichiers de construction fournis sont difficiles à utiliser. Heureusement, il est facile de construire less en utilisant CMake , voir ce texte pour plus de détails.

  • OS X distribue une ancienne version de less. Heureusement, il est facile de créer une version moderne directement à partir du code source.

8
Lindydancer

Si vous avez GNU Source-highlight installé, vous pouvez utiliser la commande suivante pour mettre en évidence la syntaxe d'un fichier:

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

Si vous utilisiez OS X 10.9 (Maverick), cela ferait l'affaire:

  • brasser installe source-highlight (En supposant que brasse est installée - http://brew.sh )
  • Sudo nano /etc/launchd.conf

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

    (Ajouter à /etc/launchd.conf)

  • redémarrer

2
TeNGiL

source-highlight a un script .sh situé dans /usr/share/source-highlight/*.sh. J'ai créé un lien symbolique avec le nom hcat dans /usr/bin.

Il montre la sortie en surbrillance dans le terminal (console) - hcat est en surbrillance cat.

Comment:

[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
Vitalie Ghelbert

J'ai trouvé highlight qui:

  • Prend en charge plusieurs jeux de couleurs et 256 couleurs
  • Fonctionne sur STDIN (contrairement à source-highlight)
  • Est beaucoup plus rapide que pygmentize

Screenshot

Voici un script que j’appelle highlight-less-wrapper et qui inclut des instructions .bashrc sur la configuration de less pour l’utiliser automatiquement.

#!/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
0
Tom Hale

Dans mac, vous pouvez simplement taper view filename, fait la même chose que moins.

0
Alan Dong

J'avais la même question et j'ai entendu, lu toutes les réponses et voici ce que j'ai finalement fait pour que la syntaxe soit mise en évidence à chaque fois que j'utilise less ou most:

Sudo apt install source-highlight

Ensuite, je suis allé créer un alias pour mes less et most (j'utilise ZSH, mais vous pouvez ajouter des alias pour votre fichier .bashrc si vous utilisez bash):

vim ~/.zshrc

( Pour ceux qui pourraient rester bloqués dans vim: appuyez sur i pour passer en mode édition, lorsque vous avez terminé, appuyez sur Esc puis : puis x et enfin Enter enregistrer les modifications )

Et collez les lignes suivantes pour les distributions basées sur Debian (comme Debian, Ubuntu, Mint, etc.):

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'

ou pour les distributions RPM (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'

rappelez-vous pour fermer le terminal et le rouvrir pour vous assurer que l'alias est créé.

Maintenant, vous pouvez profiter des couleurs:

most yourFile.xml
0
Mehrad Mahmoudian

Si vous voulez la même syntaxe que vous utilisez dans Vim , mais pour une raison quelconque, vous préférez utiliser less comme pageur, vous pouvez utiliser le script suivant: https://github.com/rkitover/vimpager

L'utilisation de base serait:

vimpager file.txt

ou

vimcat file.ext | less -R

Vous pouvez utiliser -c pour transmettre des commandes supplémentaires ne figurant pas dans votre .vimrc (par exemple, en sélectionnant un schéma de couleurs différent). La commande complète que j'utilise est la suivante:

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

Attention: si votre Vim vous demande d'appuyer sur Entrée quand il démarre, vous ne verrez pas l'invite, mais rien ne se passera tant que vous n'avez pas appuyé sur Entrée! L'astuce cmdheight ci-dessus peut aider à atténuer cela.

0
joeytwiddle

Après l’installation de source-highlight de GNU (paquet dev-util/source-highlight sur sabayon/gentoo), j’ai configuré ces envs dans /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

Je n’ai pas aimé remplacer lesspipe car cela présente d’autres caractéristiques. La concaténation n'a pas fonctionné.

0
comonad