Questão Como destacar a sintaxe via menos


existe uma maneira de sintaxe destacar um arquivo que vejo em menos?

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

less htmleditors/htmleditors_config.xml

ou

less [multiple files]

Eu gostaria de ficar em Menos (aprender esse programa melhor e usar meu conhecimento de: 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 maneira diferente. Você conhece alguma maneira de fazer isso?


118


origem




Respostas:


Você pode usar Destaque de fonte 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

107



Eu recupero a seguinte mensagem de erro quando eu corro less ~/.zshrc. Erro: src-hilite-lesspipe.sh: line 9: source-highlight: command not found. Eu corro isso no MacOSX. - JJD
@JJD Você instalou o recurso de destaque da fonte? - Max Nanasy
OSX: brew install source-highlight; export LESSOPEN="| /usr/local/bin/src-hilite-lesspipe.sh %s". Observe a mudança de caminho. - Gregg Lind
No Debian: sudo apt-get install source-highlight, export LESSOPEN="| /usr/share/source-highlight/src-hilite-lesspipe.sh %s", export LESS=' -R ' - Morgan Courbet
pequena ressalva: o source-highlight não suporta atualmente o markdown. - dhulihan


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


84



Uau! Isso é incrivelmente útil! - dancek
Maldições que abriram o Nano na minha caixa do Ubuntu! - jamesc
Em seguida, defina $ EDITOR ou $ VISUAL para vim (ou emacs, gedit, joe, ed, ou mined ou…). - Daniel H
@jamesc FYI, você pode ativar o realce de sintaxe no Nano, Aqui eu mostro. - Captain Man
@CaptainMan Nope não, não! Eu mudo o padrão de volta para vim como Daniel H disse! : D - jamesc


pygmentize somefile.ex | less -R

ou

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

Pygengize vem como parte do Pygments Python sintaxe highliter.


31



pygmentize também trabalha com o LESSOPEN coisas mencionadas em outras respostas aqui. - Nathan
Para obter pygmentize, você precisa do Python e então você pode instalar pygmentize com pip install pygments. - wkschwartz
Para obter less usar pygmentize para uso de realce de sintaxe: which pygmentize 2> /dev/null >&2 && export LESSOPEN="| pygmentize -g -f terminal256 %s". -g para fazer funcionar com tubos (less <(diff -u file1 files)). Está disponível em community/pygmentize pacote para arch linux, e em python-pygments para debian. - x-yuri
Eu gosto da saída de pygmentize, mas achei que fosse muito lento. eu vim com esta resposta que é mais rápido e ainda bonito de 256 cores. - Tom Hale


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
  • poderosos comandos de movimento
  • encontrar
  • saltar para um local específico em um arquivo (chamado de marca)
  • dobrar (útil quando você só quer 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:

http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html

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 editor, você também pode procurar no emacs ou em outro editor, pessoalmente prefira vim)


15



Eu segundo isso. O Vim é lançado tão rápido quanto menos, e muitos dos atalhos de teclado (por exemplo, pesquisa, próxima página, página anterior) são idênticos. - Jeremy W. Sherman
Apenas FYI, em muitos sistemas, view é um alias para vim -R. - Andrew Ferrier


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.

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

Ele teve alguns problemas, então eu melhorei. Eu tenho uma captura de tela em http://huyz.us/2011/a-less-like-pager-with-color-syntax-highlighting/


12



Impressionante! Mas como não consegui encontrar o script imediatamente, gostaria de compartilhar o comando para localizá-lo: find /usr/share/vim -name 'less.sh' que é retirado desta essência: gist.github.com/chauncey-garrett/9773770 - yoshi
Adicionando ao comentário do @ yoshi, para adicionar rapidamente um vimless comando (seguindo a nomenclatura de vimdiff), Faz: ln -s $(find /usr/share/vim -name 'less.sh') /usr/local/bin/vimless - waldyrious
O link é 404! - acgtyrant


Eu também estava procurando por isso e encontrei outra solução usando o Vim: http://ubuntu-tutorials.com/2008/07/14/use-vim-as-a-syntax-highlighting-pager/

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'


9



O MacVim vem com um shell script que você pode usar diretamente, localizado em: /Applications/MacVim.app/Contents/Resources/vim/runtime/macros/less.sh - Nick
Esse recurso está documentado no próprio Vim sob :help less - joeytwiddle


Estou feliz em 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:

Example

Configuração

O pacote fornece uma ferramenta de linha de comando e2ansi-cat que começa Emacs no modo batch, abre arquivos, sintaxe destacá-los e processa o resultado usando sequências ANSI.

Você pode integrar isso less definindo as seguintes variáveis para, 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, less restaura o terminal original conteúdo janela enquanto more simplesmente saída de novo conteúdo após o pronto.

Nota: Se você usar uma versão antiga do less, pode não suportar o || ou o - sintaxe, caso em que você pode precisar usar LESSOPEN=|/usr/local/emacs ....

Usando less em canos

O caractere "-" em LESSOPEN indica que o filtro de entrada deve também ser usado quando o texto da tubulação 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:

Pipe example

Por que usar o Emacs?

  • O Emacs suporta praticamente todas as linguagens de programação e formatos de texto estruturados. Na maioria dos casos, o destaque da sintaxe o suporte é excelente.
  • Você pode facilmente adicionar 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 no tema é preservado ao visualizar um arquivo em less. Você pode escolher um tema de cores adequado de várias fontes ou crie o seu próprio.
  • Se você usa o Emacs como seu editor de escolha, você terá o mesmo destacando no editor como você obtém ao visualizar um arquivo usando less (menos limitações no formato de sequência ANSI e no terminal janela).
  • less aproveitará os recursos do Emacs que executam conversão, por exemplo, descompactando arquivos. Na verdade, você pode ensinar Emacs para realizar qualquer tipo de conversão como converter automaticamente um arquivo binário para o formato legível usando uma ferramenta externa.
  • Você pode ver arquivos localizados em outras máquinas usando a sintaxe do Emacs para acesso remoto como /USER@HOST:FILENAME.

Links Úteis

  • e2ansi é distribuído em Melpa e pode ser instalado usando o sistema de pacotes Emacs padrão
  • e2ansi está hospedado em GitHub
  • o e2ansi pá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 less aplicativo é 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 construir less usando CMake, Vejo esse texto para detalhes.

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


7



Para o OS X, recomendo usar o gerenciador de pacotes fermentar [brew.sh/] com brew dupes [github.com/Homebrew/homebrew-dupes] para instalar versões atualizadas de coisas como less. - drevicko
"powered by emacs" - rodando toda a VM apenas para olhar um arquivo? ;-) e +1 - Alois Mahdal


Se você tem Destaque-fonte do GNU instalado você pode usar o seguinte comando para destacar a sintaxe de um único arquivo:

$ src-hilite-lesspipe.sh yourfile.xml | less -R

6



lata src-hilite-lesspipe.sh receber entrada através de um tubo também? - waldyrious