Como destacar a sintaxe via Menos

123

existe uma maneira de sintaxe para destacar um arquivo que eu vejo em Menos?

na verdade estou usando este comando para abrir um arquivo xml (e algumas vezes uma série deles)

less htmleditors/htmleditors_config.xml

ou

less [multiple files]

Gostaria de permanecer em Menos (para aprender melhor esse programa e usar meus conhecimentos sobre: n e: p para a navegação seguinte / anterior)

Mas também quer algum tipo de destaque básico de sintaxe - pelo menos mostre os comentários de forma diferente. Você conhece alguma maneira de fazer isso?

    
por Jesper Rønn-Jensen 17.11.2009 / 11:20

15 respostas

113

Você pode usar o destaque do GNU , como mostrado aqui :

 export LESSOPEN="| /usr/bin/src-hilite-lesspipe.sh %s"
 export LESS=' -R '

A partir do Debian Stretch e do Fedora 25, os nomes de pacotes e caminhos de script são diferentes. Debian:

sudo apt install libsource-highlight-common source-highlight
dpkg -L libsource-highlight-common | grep lesspipe
# /usr/share/source-highlight/src-hilite-lesspipe.sh

e Fedora:

sudo dnf install source-highlight
rpm -ql source-highlight | grep lesspipe
# /usr/bin/source-highlight/src-hilite-lesspipe.sh
    
por 17.11.2009 / 11:35
85

Melhor de ambas as respostas anteriores: você pode invocar o editor padrão do sistema a partir de menos, pressionando v .

    
por 24.08.2010 / 19:14
31
pygmentize somefile.ex | less -R

ou

function cless () {
    pygmentize -f terminal "$1" | less -R
}

Pygginize vem como parte do sintetizador de Python Python .

    
por 24.08.2010 / 20:25
15

Eu acho que você deveria usar um editor de texto. Eu gosto de mim mesmo. Isso vai lhe dar muito poder ao visualizar arquivos e, em seguida, quando você quiser editá-los, você já saberá o básico.

Aqui estão algumas das vantagens de usar um editor de texto (especificamente vim):

  • realce de sintaxe
  • comandos poderosos de movimento
  • encontre
  • pular para um local específico em um arquivo (chamado de marca)
  • dobrável (útil quando você quer apenas ver a função stubbs)

Para abrir seu arquivo no modo somente leitura, use isto:

vim -R <file name>

Aqui está um guia básico de navegação:

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

Aqui está um link para mais informações:

link

Só para recapitular, se você usar o unix vim é bem fundamental. Ouvi dizer que aprender vim é como aprender a digitar. É a próxima ferramenta mais útil que você pode aprender para programar.

(Só para evitar guerras de editores, você também pode olhar para o emacs ou outro editor, no entanto eu pessoalmente prefiro o vim)

    
por 01.03.2010 / 23:18
13

Como outros já disseram, você pode usar o poder do vim. Mas, mais importante, você pode fazer isso sem aprender como usar o vi / vim.

O Vim vem com um script less.vim que funciona muito bem como um substituto para menos, com realce de sintaxe em cores. Ele usa less keybindings (apenas pressione 'q' para sair).

Ele teve alguns problemas, então eu melhorei. Tenho uma captura de tela no link

    
por 04.07.2011 / 07:35
9

Eu também estava procurando por isso e encontrei outra solução usando o Vim: link

A postagem é bastante antiga, portanto, agora, mais recentes distros vim 7.2 são enviados e o .bashrc irá ler: alias vless = 'vim -u /usr/share/vim/vim72/macros/less.vim'

    
por 10.02.2011 / 14:43
7

Tenho o prazer de anunciar um novo pacote, e2ansi , que fornece suporte de destaque de sintaxe para pagers como more e less .

O pacote usa a mãe de todos os editores de texto, Emacs , para Realize o destaque real da sintaxe. Como um bônus adicional, todos os outros conversões normalmente executadas pelo Emacs - como arquivos descompactadores - também é executado.

Exemplo

O seguinte é o resultado da visualização de um arquivo usando less e e2ansi :

Configuração

Opacoteforneceumaferramentadelinhadecomandoe2ansi-catqueiniciaEmacsnomodobatch,abrearquivos,sintaxedestacá-loseprocessaoresultadousandosequênciasANSI.

Vocêpodeintegrarissoemlessdefinindoasseguintesvariáveispara,porexemplo(alocalizaçãodoseuarquivoinitpodevariar):

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, less restaura o terminal original conteúdo da janela, enquanto que more simplesmente gera novo conteúdo após o prompt.

Nota: Se você usar uma versão antiga de less , talvez não ofereça suporte ao || ou a sintaxe - , caso em que você pode precisar usar LESSOPEN=|/usr/local/emacs ... .

Usando less em tubos

O caractere "-" em LESSOPEN indica que o filtro de entrada deve também pode ser usado ao enviar o texto para less . Neste caso, o Emacs pode depende apenas do próprio texto (e não do nome do arquivo). Felizmente, o Emacs fornece um sistema para isso. Além disso, o arquivo de arquivo fornecido e2ansi-magic.el configura tipos de arquivos adicionais. Por exemplo:

PorqueusaroEmacs?

  • OEmacssuportapraticamentetodasaslinguagensdeprogramaçãoeformatosdetextoestruturados.Namaioriadoscasos,odestaquedasintaxeosuporteéexcelente.
  • Vocêpodeadicionarsuporteamaisidiomaseformatosoumodificarpacotesexistentesparaatenderàssuasnecessidades.
  • OEmacssuportatemasdecores.Aousare2ansi,ascoresnoOtemaépreservadoaovisualizarumarquivoemless.Vocêpodeescolherumtemadecoresadequadodeváriasfontesoucrieoseupróprio.
  • SevocêusaoEmacscomoseueditordeescolha,teráomesmodestacandonoeditorcomovocêobtémaovisualizarumarquivousandoless(menoslimitaçõesnoformatodesequênciaANSIenoterminaljanela).
  • lessaproveitaráosrecursosdoEmacsqueexecutamautomaticamenteconversão,porexemplo,descompactandoarquivos.Naverdade,vocêpodeensinarEmacspararealizarqualquertipodeconversãocomoconverterautomaticamenteumarquivobinárioparaoformatolegívelporhumanosusandoumaferramentaexterna.
  • VocêpodevisualizararquivoslocalizadosemoutrasmáquinasusandoasintaxedoEmacsparaacessoremotocomo/USER@HOST:FILENAME.

Linksúteis

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

Notas do sistema operacional

  • No MS Windows, o console não suporta nativamente seqüências ANSI. Felizmente, o aplicativo less é capaz de renderizá-los. Eu Não estou ciente de qualquer distribuição binária contemporânea de less para MS Windows e os arquivos de compilação fornecidos são difíceis de usar. Felizmente, é fácil criar less usando o CMake , veja este texto para detalhes.

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

por 04.02.2015 / 20:10
6

Se você tiver GNU Source-highlight instalado, você pode usar o comando a seguir para destacar a sintaxe de um único arquivo:

$ src-hilite-lesspipe.sh yourfile.xml | less -R
    
por 07.04.2012 / 09:52
2

source-highlight tem um script .sh localizado em /usr/share/source-highlight/*.sh . Eu criei um link simbólico para ele com o nome hcat in /usr/bin .

Mostra a saída realçada no terminal (console) - hcat está destacado cat.

Como:

[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
    
por 19.04.2013 / 20:25
2

Usando o OS X 10.9 (Maverick), isso funcionará:

  • brew install source-highlight (Supondo que brew esteja instalado - link )
  • sudo nano /etc/launchd.conf

    setenv LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s"     
    setenv LESS=' -R '
    

    (Adicionar ao /etc/launchd.conf)

  • reboot

por 07.04.2014 / 21:21
0

No mac, você pode apenas digitar view filename , faz algo parecido com menos.

    
por 14.07.2014 / 16:12
0

Após instalar o destaque da fonte do GNU (pacote dev-util/source-highlight no sabayon / gentoo ), Eu configurei esses envs em /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

Eu não gostei de substituir lesspipe porque isso tem outros recursos. A concatenação não funcionou.

    
por 24.03.2015 / 14:27
0

Se você quiser o mesmo realce de sintaxe que você usa no Vim , mas por algum motivo você preferir usar less como seu pager, você pode usar este script: link

O uso básico seria:

vimpager file.txt

ou

vimcat file.ext | less -R

Você pode usar -c para passar comandos extras que não estão no seu .vimrc (por exemplo, selecionando um esquema de cores diferente). O comando completo que eu uso é:

vimcat -c 'set cmdheight=20' -c 'hi! clear Normal' -o - "$FILENAME" | less -REXS
Cuidado: Se o seu Vim lhe pedir para pressionar Enter quando for iniciado, você não verá o prompt, mas nada acontecerá até que você pressione Enter! O truque cmdheight acima pode ajudar a atenuar isso.

    
por 03.02.2018 / 17:01
0

Eu encontrei highlight que:

  • Suporta vários esquemas de cores e 256 cores
  • Funciona no STDIN (ao contrário de source-highlight )
  • é muito mais rápido que pygmentize

Aquiestáumscriptqueeuchamodehighlight-less-wrapper,queinclui.bashrcinstruçõessobrecomoconfigurarlessparausá-loautomaticamente.

#!/bin/bash#HavehighlightreadfromSTDINif'-'isgivenasfilename#Setup-Addto.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
    
por 17.06.2018 / 17:50
0

Eu fiz a mesma pergunta e acabei ouvindo, li todas as respostas e o seguinte foi o que eu finalmente fiz para destacar a sintaxe toda vez que eu uso less ou most :

sudo apt install source-highlight

Então eu fui e criei um alias para meu less e most (eu uso o ZSH, mas você pode adicionar aliases para o seu arquivo .bashrc se você usar o bash):

vim ~/.zshrc

( Para aqueles que podem ficar presos no vim: pressione i para ir para o modo de edição, quando você terminar pressione Esc e então : então x e finalmente Digite para salvar as alterações )

E cole as seguintes linhas para distribuições baseadas no Debian (como 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 para distribuições de 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'

Lembre-se de fechar o terminal e abri-lo novamente para garantir que o alias seja criado.

Agora você pode curtir as cores:

most yourFile.xml
    
por 05.09.2018 / 09:56