web-dev-qa-db-fra.com

Mise en évidence de la syntaxe dans le terminal

De nombreux éditeurs axés sur la programmation coloriseront le code source. Existe-t-il une commande qui colorisera le code source à afficher dans le terminal?

Je pourrais ouvrir un fichier avec emacs -nw (qui s'ouvre dans le terminal au lieu de faire apparaître une nouvelle fenêtre), mais je cherche quelque chose qui fonctionne comme less (ou qui fonctionne avecless -R, qui passe par des séquences d'échappement de couleur dans son entrée).

43
alexis

Avec highlight sur un terminal qui prend en charge les mêmes séquences d'échappement de couleur que xterm :

highlight -O xterm256 your-file | less -R

Avec Ruby-rouge :

rougify your-file | less -R

Avec python-pygments :

pygmentize your-file | less -R

Avec GNU source-highlight :

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

Vous pouvez également utiliser vim comme pageur à l'aide de macros/less.sh script fourni avec vim (voir :h less dans vim pour plus de détails):

Sur mon système:

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

Vous pouvez également utiliser l'un des surligneurs de syntaxe prenant en charge la sortie HTML et utiliser elinks ou w3m comme pager (ou elinks -dump -dump-color-mode 3 | less -R) comme avec GNU source-highlight :

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

J'utilise GNU source-highlight combiné avec less -R pour ça. Ajoutez les lignes suivantes au fichier d'initialisation de votre shell (~/.bashrc, par exemple):

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

Cela devrait colorer automatiquement le code source en fonction de la langue utilisée et, si ce n'est pas le cas, il lancera less directement sur son entrée.

14
terdon

Si vous êtes intéressé par les couleurs dans less plus généralement, vous voudrez peut-être regarder lesspipe.sh. Voir, par exemple, http://freecode.com/projects/lesspipe .

lesspipe.sh est un filtre d'entrée pour le pager less comme décrit dans la page de manuel de less. Le script s'exécute sous un shell compatible ksh (par exemple bash, zsh) et vous permet d'utiliser moins pour afficher des fichiers avec du contenu binaire, des fichiers compressés, des archives et des fichiers contenus dans des archives.

Il coloriera également les scripts Shell, les scripts Perl, etc. de manière similaire à un éditeur de texte, mais sans utiliser de programme de "prétraitement" pour effectuer la colorisation.

6
DaveEmme

J'apprécie la simplicité et j'utilise l'éditeur de texte nano, dans ce cas je procède généralement comme suit:

vérifier que la coloration syntaxique de la sorcière est disponible: ls -la /usr/share/nano/

l'inclure dans mon fichier nanorc avec la commande suivante, ou en le faisant manuellement

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

à propos de less je suggère de jeter un œil à cette page

2
lese

Selon Stéphane Chazelas suggestion, je fais une fonction bash pour utiliser highlight afficher la surbrillance de la syntaxe, la mettre dans .bashrc ou ainsi de suite. Cela fonctionne très bien, rapidement et efficacement.

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

mettre en évidence le support format de syntaxe 202 langues. voir highlight --list-scripts=langs.

0
utopic eexpress

Vous pouvez utiliser le package, e2ansi , qui fournit une prise en charge de la coloration syntaxique pour les pageurs comme more et less.

Le package utilise la mère de tous les éditeurs de texte, Emacs , pour effectuer la mise en évidence de la syntaxe réelle. En prime, toutes les autres conversions normalement effectuées par Emacs - comme les fichiers non compressés - sont également effectuées.

Exemple

Ce qui suit est le résultat de l'affichage d'un fichier à l'aide de less et e2ansi:

Example

Configuration

Le package fournit un outil en ligne de commande e2ansi-cat qui démarre Emacs en mode batch, ouvre les fichiers, les met en surbrillance et rend le résultat à l'aide de séquences ANSI.

Vous pouvez l'intégrer dans 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 de la fenêtre de terminal d'origine tandis que more sort simplement le nouveau contenu après l'invite.

Remarque: Si vous utilisez une ancienne version de less, elle peut ne pas prendre en charge le || ou la - syntaxe, auquel cas vous devrez peut-être utiliser simplement LESSOPEN=|/usr/local/emacs ....

Utilisation de 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 fourni e2ansi-magic.el configure des types de fichiers supplémentaires. Par exemple:

Pipe example

Pourquoi utiliser Emacs?

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

Liens utiles

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

Remarques sur le système d'exploitation

  • Sous MS Windows, la console ne prend pas en charge nativement les séquences ANSI. Heureusement, l'application less est capable de les rendre. Je ne connais 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 de la source.

0
Lindydancer