Nano: come ottenere l'evidenziazione della sintassi?

3

Ho un'installazione predefinita di nano in /usr/bin/ e sto cercando di rendere nano l'evidenziazione del codice del linguaggio di scripting bash.

Ho cercato in giro, ma non ho avuto successo: ho sempre degli errori o semplicemente non funziona. Ad esempio, ho provato a scaricare il seguente repository da Github github.com/nanorc/nanorc.git con il seguente comando:

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

e quindi segui i passaggi in questo post , ma ho riscontrato degli errori perché alcuni comandi all'interno dei file non sono riconosciuti. In particolare, se aggiungo questa riga include ~/nanorc/shell.nanorc al mio file ~/.nanorc , dove il file shell.nanorc contiene:

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

Sembra che questi comandi precedenti, come STRING , ESCAPE , ecc. non siano riconosciuti.

Come imposteresti l'evidenziazione della sintassi per nano, almeno per bash?

    
posta nbro 03.07.2015 - 16:18
fonte

2 risposte

1

Dal file man Nanorc (5):

The configuration file accepts a series of set and unset commands, which can be used to configure nano on startup without using the command line options. Additionally, the syntax, color, and icolor keywords are used to define syntax highlighting rules for different text patterns. nano will read one command per line.

Il tuo nanorc lo manca.

Da git leggimi da quel repository:

Why do I get weird errors when running nano < 2.1.5 on *BSD systems?
In order to reliably highlight keywords, this projects makes heavy use of the GNU regex word boundary extensions (\< and >). BSD implementations also have these extensions but use a different, incompatible syntax ([[:<:]] and [[:>:]]). Since version 2.1.5, nano can automatically translate the GNU syntax to BSD syntax at run-time, but for the benefit of people running a pre-2.1.5 version of nano on OS X or *BSD, the .nanorc file itself can be translated by installing with make BSDREGEX=1.

Quello che sta succedendo è che in realtà non hai seguito i comandi di installazione completi . Se hai clonato il git, cd'd nella directory e hai eseguito make install, i tuoi file di sintassi sarebbero diversi. Per uno, la versione predefinita di nano su OS X (I'm on 10.10.5 Mavericks) è nano 2.0.6 . Non supporta l'intestazione nella sintassi in questa versione precedente. Il makefile per il repository git rimuoverebbe quello. E aggiungerebbe le opzioni di colore.

Hai 3 opzioni.

  1. Assicurati di avere gli strumenti da riga di comando OS X (o il codice X completo) installato ed eseguito tutti i comandi di installazione.
  2. usa i file di sintassi nanorc precompilati compatibili con il nano 2.0.6 preinstallato con regex BSD.
  3. Installa un nuovo nano e usa il nanorc fornito con l'installazione completa.

Come bonus, ho trovato e modificato un singolo nanorc per sh / bash. Modifica come vuoi:

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:]]+$"
    
risposta data 07.10.2015 - 02:53
fonte
1

Installa l'ultima versione di nano con homebrew :

  1. Installa homebrew: link
  2. Installa nano: brew install nano
  3. Aggiungi questa linea a ~/.nanorc . Quella directory ha tutti i file di definizione dell'evidenziazione della sintassi.

    include "/usr/local/share/nano/*.nanorc"
    
risposta data 22.04.2017 - 02:50
fonte

Leggi altre domande sui tag