Destaque de sintaxe no terminal

43

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

Eu poderia abrir um arquivo com emacs -nw(que abre no terminal em vez de abrir uma nova janela), mas estou procurando algo que funcione less(ou que funcione com less -R , que passe por seqüências de escape de cores em sua entrada).

alexis
fonte

Respostas:

66

Com highlightum 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 o GNUsource-highlight :

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

Você também pode usar vimcomo pager com a ajuda do macros/less.shscript enviado vim(veja detalhes para :h lessdentro vim):

No meu sistema:

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

Ou você pode usar qualquer um dos marcadores de sintaxe que oferecem suporte à saída e uso de HTML elinksou w3mcomo pager (ou elinks -dump -dump-color-mode 3 | less -R) como no GNUsource-highlight :

source-highlight -o STDOUT -i your-file | elinks -dump -dump-color-mode 3 | less -R
Stéphane Chazelas
fonte
O destaque pode converter texto em SVG / HTML, o que é muito interessante.
Utopic eexpress
14

Eu uso o GNU source-highlightcombinado com less -Risso. 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, será iniciado lessdiretamente em sua entrada.

terdon
fonte
6

Se você estiver interessado em cores de maneira lessmais geral, talvez queira dar uma olhada lesspipe.sh. Veja, por exemplo, http://freecode.com/projects/lesspipe .

lesspipe.sh é um filtro de entrada para o pager less conforme descrito na página do manual do less. O script é executado em um shell compatível com ksh (por exemplo, bash, zsh) e permite que você use menos para exibir arquivos com conteúdo binário, arquivos compactados, arquivos e arquivos contidos em arquivos.

Ele também colorirá scripts de shell, scripts perl, etc. de maneira semelhante a um editor de texto, mas sem o uso de qualquer programa de "pré-processamento" para fazer a coloração.

DaveEmme
fonte
Obrigado! Eu acho que lesspipe.shé o que eu estava tentando lembrar antes de eu postei a pergunta ...
alexis
2

Aprecio a simplicidade e uso o nano editor de texto; nesse caso, geralmente procedo da seguinte forma:

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

incluí-lo no meu arquivo nanorc com o seguinte comando ou manualmente

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

sobre lesssugiro dar uma olhada nesta página

lese
fonte
0

De acordo com a sugestão de Stéphane Chazelas , eu faço uma função bash para usar o highlightshow Syntax destaque, coloco-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 suporte 202 formato de sintaxe de idioma . veja highlight --list-scripts=langs.

eexpress utópico
fonte
0

Você pode usar o pacote, e2ansi , que fornece suporte para destaque de sintaxe para pagers como moree less.

O pacote usa a mãe de todos os editores de texto, o Emacs , para executar o realce da sintaxe. Como um bônus adicional, todas as outras conversões normalmente executadas pelo Emacs - como descompactar arquivos - também são executadas.

Exemplo

A seguir, o resultado da exibição de um arquivo usando lesse e2ansi:

Exemplo

Configuração

O pacote fornece uma ferramenta de linha de comando e2ansi-catque inicia o Emacs no modo em lote, abre arquivos, destaca a sintaxe e renderiza o resultado usando sequências ANSI.

Você pode integrar isso lessconfigurando as seguintes variáveis ​​como, por exemplo (a localização do seu arquivo init pode variar):

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

Na configuração acima, lessrestaura o conteúdo original da janela do terminal e moresimplesmente gera novo conteúdo após o prompt.

Nota: Se você usar uma versão antiga less, ela poderá não suportar ||a -sintaxe ou , nesse caso, poderá ser necessário usá-la simplesmente LESSOPEN=|/usr/local/emacs ....

Usando lessem tubos

O caractere "-" LESSOPENindica que o filtro de entrada também deve ser usado ao inserir texto no canal less. Nesse caso, o Emacs pode confiar apenas no próprio texto (e não no nome de um arquivo). Felizmente, o Emacs fornece um sistema para isso. Além disso, o arquivo de arquivo fornecido e2ansi-magic.elconfigura tipos de arquivo adicionais. Por exemplo:

Exemplo de tubulação

Por que usar o Emacs?

  • O Emacs tem suporte para praticamente todas as linguagens de programação e formatos de texto estruturado. Na maioria dos casos, o suporte de destaque de sintaxe é excelente.
  • Você pode adicionar facilmente suporte para mais idiomas e formatos ou modificar pacotes existentes para atender às suas necessidades.
  • O Emacs suporta temas de cores. Ao usar e2ansi, as cores do tema são preservadas ao exibir um arquivo less. Você pode escolher um tema de cores adequado de várias fontes ou criar seu próprio.
  • Se você usar o Emacs como seu editor de escolha, obterá o mesmo destaque no editor ao exibir um arquivo usando less(menos limitações no formato de sequência ANSI e na janela do terminal).
  • lessaproveitará os recursos do Emacs que executam a conversão automática, por exemplo, descompactando arquivos. De fato, você pode ensinar o Emacs a realizar qualquer tipo de conversão, como converter automaticamente um arquivo binário em formato legível por humanos, usando uma ferramenta externa.
  • Você pode visualizar arquivos localizados em outras máquinas usando a sintaxe do Emacs para acesso remoto como /USER@HOST:FILENAME.

Links Úteis

  • e2ansié distribuído no Melpa e pode ser instalado usando o sistema de pacotes Emacs padrão
  • e2ansiestá hospedado no GitHub
  • A e2ansipágina no Emacs Wiki
  • A casa de less.

Notas do sistema operacional

  • No MS Windows, o console não suporta nativamente sequências ANSI. Felizmente, o lessaplicativo é capaz de renderizá-los. Não conheço nenhuma distribuição binária contemporânea do lessMS Windows e os arquivos de compilação fornecidos são difíceis de usar. Felizmente, é fácil criar lessusando o CMake , consulte este texto para obter detalhes.

  • OS X distribui uma versão antiga do less. Felizmente, é fácil criar uma versão moderna diretamente da fonte.

Lindydancer
fonte
-2

É chamado de destaque de sintaxe.

Destaque GNU Source quando recebe um arquivo de origem, produz um documento com destaque de sintaxe.

Eu uso o lessfilterscript abaixo, ou você pode lessinvocá-lo automaticamente como com:

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

Encontrei este artigo e comecei a fazê-lo desta maneira:

#!/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-highlightmas nem todas as distribuições o incluem)

mtelesha
fonte
4
"Se você for ao artigo, o autor deve estar usando um Mac, pois ele usa maiúsculas para seus comandos": Receio que você esteja um pouco confuso: é evidente que você não sabe que exportdefine uma variável de ambiente, não um apelido. O comando less usa sinalizadores da variável de ambiente LESS, portanto, sua resposta precisa de algum trabalho.
Alexis #