Sintaxe destacando no terminal

41

Muitos editores orientados à programação irão colorir o código fonte. Existe um comando que irá colorir o código-fonte para visualização no terminal?

Eu poderia abrir um arquivo com emacs -nw (que é aberto no terminal em vez de abrir uma nova janela), mas estou procurando algo que funciona como less (ou que funciona com less -R , que passa pelas seqüências de escape de cores em sua entrada).

    
por alexis 03.03.2016 / 13:40

6 respostas

65

Com highlight em um terminal que suporta as mesmas seqüências de escape de cores que xterm :

highlight -O xterm256 your-file | less -R

Com ruby-rouge :

rougify your-file | less -R

Com python-pygments :

pygmentize your-file | less -R

Com GNU source-highlight :

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

Você também pode usar vim como um pager com a ajuda do script macros/less.sh enviado com vim (consulte :h less em vim para obter detalhes):

No meu sistema:

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

Ou você pode usar qualquer um dos marcadores de sintaxe que suportam saída HTML e usar elinks ou w3m como o pager (ou elinks -dump -dump-color-mode 3 | less -R ) como com GNU source-highlight :

source-highlight -o STDOUT -i your-file | elinks -dump -dump-color-mode 3 | less -R
    
por 03.03.2016 / 13:53
10

Eu uso o GNU source-highlight combinado com less -R para isso. Adicione as seguintes linhas ao arquivo de inicialização do seu shell ( ~/.bashrc , por exemplo):

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

Isso deve colorir automaticamente o código-fonte de acordo com o idioma usado e, se não puder, ele lançará less em sua entrada diretamente.

    
por 03.03.2016 / 15:19
6

Se você estiver interessado em cores em less mais geralmente, talvez queira ver lesspipe.sh . Veja, por exemplo, link .

lesspipe.sh is an input filter for the pager less as described in less's man page. The script runs under a ksh-compatible shell (e.g. bash, zsh) and allows you to use less to view files with binary content, compressed files, archives, and files contained in archives.

Ele também irá colorir scripts de shell, scripts perl, etc., similarmente a um editor de texto, mas sem o uso de nenhum programa de "pré-processamento" para fazer o colorizing.

    
por 03.03.2016 / 14:32
2

Eu gosto de simplicidade e uso nano editor de texto, neste caso eu costumo proceder da seguinte forma:

verifique se o destaque da sintaxe da bruxa está disponível: ls -la /usr/share/nano/

inclua no meu arquivo nanorc com o seguinte comando, ou fazendo manualmente

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

sobre less sugiro dar uma olhada em esta página

    
por 03.03.2016 / 13:58
0

De acordo com a sugestão Stéphane Chazelas , eu faço uma função bash para usar highlight show Syntax highlight, coloque-o em .bashrc ou assim por diante. Funciona muito bem, rápido e eficaz.

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

destaque o suporte formato de sintaxe de 202 idiomas . veja highlight --list-scripts=langs .

    
por 01.04.2017 / 06:34
-2

É chamado de realce de sintaxe.

GNU Source-highlight quando recebe um arquivo fonte, produz um documento com realce de sintaxe.

Eu uso o script lessfilter abaixo ou você pode fazer o less chamá-lo automaticamente com:

export LESSOPEN="| /path/to/lessfilter %s"
export LESS=' -R '

Eu encontrei este artigo e comecei a fazer desse jeito :

#!/bin/sh
file -b -L "$1" | grep -q text &&
  /usr/share/source-highlight/src-hilite-lesspipe.sh "$1"

( src-hilite-lesspipe.sh é enviado com source-highlight , mas nem todas as distribuições incluem)

    
por 03.03.2016 / 13:58