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?
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
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.
pygmentize somefile.ex | less -R
ou
function cless () {
pygmentize -f terminal "$1" | less -R
}
Pygmentize fait partie de Pygments Python syntax highliter .
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):
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)
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):
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'
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.
Voici le résultat de l'affichage d'un fichier à l'aide de less
et e2ansi
:
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 ...
.
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 fichier e2ansi-magic.el
définit des types de fichiers supplémentaires. Par exemple:
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.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./USER@Host:FILENAME
.e2ansi
est distribué sur Melpa et peut être installé à l'aide du système de paquetage Emacs standarde2ansi
est hébergé sur GitHube2ansi
du Emacs Wikiless
.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.
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
Si vous utilisiez OS X 10.9 (Maverick), cela ferait l'affaire:
Sudo nano /etc/launchd.conf
setenv LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s" setenv LESS=' -R '
(Ajouter à /etc/launchd.conf)
redémarrer
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
J'ai trouvé highlight
qui:
source-highlight
)pygmentize
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
Dans mac, vous pouvez simplement taper view filename
, fait la même chose que moins.
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
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.
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é.