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).
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
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.
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.
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
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
.
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.
Ce qui suit est le résultat de l'affichage d'un fichier à l'aide de less
et e2ansi
:
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 ...
.
less
dans les tuyauxLe 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:
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.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./USER@Host:FILENAME
.e2ansi
est distribué sur Melpa et peut être installé à l'aide du système de package Emacs standarde2ansi
est hébergé sur GitHube2ansi
page sur le Wiki Emacsless
.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.