Nano: como obter destaque de sintaxe?

3

Eu tenho uma instalação padrão de nano debaixo /usr/bin/e eu estou tentando fazer nano realce o código da linguagem de script do bash.

Eu tenho procurado por aí, mas não tive sucesso: sempre tenho alguns erros ou simplesmente não funcionam. Por exemplo, tentei baixar o seguinte repositório do Github github.com/nanorc/nanorc.git com o seguinte comando:

git clone https://github.com/nanorc/nanorc.git

e depois siga os passos em esta postagem , mas eu tive erros porque alguns comandos dentro dos arquivos não são reconhecidos. Em particular, se eu adicionar esta linha include ~/nanorc/shell.nanorc para o meu arquivo ~/.nanorc, onde o arquivo shell.nanorc contém:

syntax "sh" "\.sh$" "\.bash$" "bashrc$" "bash_profile$"
header "^#!.*/(env +)?(ba|k|pdk)?sh[-0-9_]*( |$)"

FUNCTION: "^[A-Za-z0-9_+-]+[[:space:]]*\(\)"
KEYWORD:  "\<(case|do|done|elif|else|esac|fi|for|function|if)\>"
KEYWORD:  "\<(in|select|then|time|until|while)\>"
FUNCTION: "\<(echo|exit|export|let|local|read|return|set|shift|umask|unset)\>"
FUNCTION: "\<(source)\>"
OPERATOR: "[{}()<>!=&|;`$]|\\|\[|\]|-(eq|ne|gt|lt|ge|le|s|n|z)\>"
STRING:   ""(\\.|[^"])*""
VARIABLE: "\$\{?[A-Za-z0-9_!@#$*?-]+\}?|`[^`]*`"
STRING:   "'(\\.|[^'])*'"
ESCAPE:   "\\.?"
+HASHCOMMENT
+TODO
+LINT

Parece que esses comandos anteriores, tais STRING, ESCAPE, etc, não são reconhecidos.

Como você definiria o realce de sintaxe para o nano, pelo menos para o bash?

nbro
fonte
O que acontece se você copiar o texto para ~ / .nanorc e não usar um include?
Mark
@Mark recebo os mesmos erros: Command "header" not understood, etc.
nbro

Respostas:

1

Do arquivo do homem de Nanorc (5):

O arquivo de configuração aceita uma série de comandos set e unset, que podem ser usados ​​para configurar o nano na inicialização sem usar as opções de linha de comando. Além disso, o sintaxe , cor e icolor Palavras-chave são usadas para definir regras de realce de sintaxe para diferentes padrões de texto. O nano irá ler um comando por linha.

Seu nanorc não tem isso.

Do git, leia-me desse repo:

Por que eu recebo erros estranhos ao executar nano & lt; 2.1.5 em sistemas * BSD?
Para destacar palavras-chave de maneira confiável, esses projetos fazem uso intenso das extensões de limite de palavras regex do GNU (\ & lt; e & gt;). As implementações do BSD também possuem essas extensões, mas usam uma sintaxe diferente e incompatível ([[: & lt ;:]] e [[: & gt ;:]]). Desde a versão 2.1.5, o nano pode traduzir automaticamente a sintaxe GNU para a sintaxe BSD em tempo de execução, mas para o benefício de pessoas executando uma versão pré-2.1.5 do nano no OS X ou * BSD, o próprio arquivo .nanorc pode ser traduzido instalando com make BSDREGEX = 1.

O que está acontecendo é que você não seguiu os comandos de instalação completos . Se você clonou o git, digitou no diretório e executou make install, seus arquivos de sintaxe seriam diferentes. Por um lado, a versão padrão do nano no OS X (estou no 10.10.5 Mavericks) é nano 2.0.6 . Não suporta o cabeçalho na sintaxe desta versão mais antiga. O makefile para o repositório do git removeria isso. E acrescentaria as opções de cores.

Você tem 3 opções.

  1. Certifique-se de ter as ferramentas de linha de comando do OS X (ou código X completo) instalado e execute todos os comandos de instalação.
  2. use arquivos de sintaxe nanorc pré-compilados compatíveis com o nano 2.0.6 pré-instalado com BSD regex.
  3. Instale um nano mais novo e use o nanorc que vem com a instalação completa.

Como bônus, eu encontrei e editei um único nanorc para sh / bash. Edite como quiser:

syntax "sh" "\.sh$" "\.bash$" "bashrc$" "bash_profile$"
icolor brightgreen "^[0-9A-Z_]+\(\)"
color blue "[[:<:]](case|do|done|elif|else|esac|exit|fi|for|function|if|in|local|read|return|select|shift|then|time|until|while)[[:>:]]"
color green "(\{|\}|\(|\)|\;|\]|\[|`|\\|\$|<|>|!|=|&|\|)"
color green "-[Ldefgruwx][[:>:]]"
color green "-(eq|ne|gt|lt|ge|le|s|n|z)[[:>:]]"
color brightblue "[[:<:]](cat|cd|chmod|chown|cp|echo|env|export|grep|install|let|ln|make|mkdir|mv|rm|sed|set|tar|touch|umask|unset)[[:>:]]"
icolor brightred "\$\{?[0-9A-Z_!@#$*?-]+\}?"
color cyan "(^|[[:space:]])#.*$"
color brightmagenta ""(\\.|[^"])*"" "'(\\.|[^'])*'"
color ,green "[[:space:]]+$"
cde
fonte
1

Instale a última versão do nano com homebrew:

  1. Instalar homebrew: https://brew.sh/
  2. Instale o nano: brew install nano
  3. Adicione esta linha para ~/.nanorc. Esse diretório tem todos os arquivos de definição de realce de sintaxe.

    include "/usr/local/share/nano/*.nanorc"
    
wisbucky
fonte