Nano: ¿cómo obtener el resaltado de sintaxis?

3

Tengo una instalación predeterminada de nano bajo /usr/bin/ , y estoy tratando de hacer que nano resalte el código del lenguaje de scripts de bash.

He estado buscando, pero no tuve éxito: siempre tuve algunos errores, o simplemente no funciona. Por ejemplo, he intentado descargar el siguiente repositorio desde Github github.com/nanorc/nanorc.git con el siguiente comando:

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

y luego siga los pasos en esta publicación , pero he tenido errores porque no se reconoce algún comando dentro de los archivos. En particular, si agrego esta línea include ~/nanorc/shell.nanorc a mi archivo ~/.nanorc , donde el archivo 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

Parece que estos comandos anteriores, como STRING , ESCAPE , etc., no se reconocen.

¿Cómo establecería el resaltado de sintaxis para nano, al menos para bash?

    
pregunta nbro 03.07.2015 - 16:18

2 respuestas

1

Desde el archivo man Nanorc (5):

  

El archivo de configuración acepta una serie de comandos de configuración y desarmado, que se pueden usar para configurar nano en el inicio sin usar las opciones de la línea de comandos. Además, las palabras clave sintaxis , color y icolor se utilizan para definir reglas de resaltado de sintaxis para diferentes patrones de texto. nano leerá un comando por línea.

A tu nanorc le falta eso.

Desde el git léeme de ese repo:

  

¿Por qué aparece un error extraño al ejecutar nano < 2.1.5 en * BSD systems?
  Para resaltar las palabras clave de manera confiable, este proyecto hace un uso intensivo de las extensiones de límite de palabras de expresiones regulares de GNU (\ < y >). Las implementaciones de BSD también tienen estas extensiones, pero utilizan una sintaxis diferente e incompatible ([[: & lt ;:]] y [[: & gt ;:]]). Desde la versión 2.1.5, nano puede traducir automáticamente la sintaxis GNU a la sintaxis BSD en tiempo de ejecución, pero en beneficio de las personas que ejecutan una versión pre-2.1.5 de nano en OS X o * BSD, el propio archivo .nanorc puede se traducirá mediante la instalación con make BSDREGEX = 1.

Lo que está sucediendo es que no siguió realmente los comandos de instalación completos . Si clonó git, cd'd en el directorio y ejecutó make install, sus archivos de sintaxis se verían diferentes. Por un lado, la versión predeterminada de nano en OS X (estoy en 10.10.5 Mavericks) es nano 2.0.6 . No admite el encabezado en la sintaxis de esta versión anterior. El makefile para el repositorio de git eliminaría eso. Y agregaría en las opciones de color.

Tienes 3 opciones.

  1. Asegúrese de tener las herramientas de línea de comandos de OS X (o el código X completo) instale y ejecute todos los comandos de instalación.
  2. utilice archivos de sintaxis nanorc precompilados compatibles con el nano 2.0.6 preinstalado con regex BSD.
  3. Instale un nano más nuevo y use el nanorc que viene con la instalación completa.

Como beneficio adicional, encontré y edité un solo nanorc para sh / bash. Edita como quieras:

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:]]+$"
    
respondido por el cde 07.10.2015 - 02:53
1

Instala la última versión de nano con homebrew :

  1. instalar homebrew: enlace
  2. instala nano: brew install nano
  3. Añade esta línea a ~/.nanorc . Ese directorio tiene todos los archivos de definición de resaltado de sintaxis.

    include "/usr/local/share/nano/*.nanorc"
    
respondido por el wisbucky 22.04.2017 - 02:50

Lea otras preguntas en las etiquetas