5 votos

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

Tengo una instalación por defecto de nano bajo /usr/bin/ y estoy tratando de hacer nano resaltar el código del lenguaje de scripting bash.

He estado buscando por ahí, pero no he tenido éxito: Siempre tengo algunos errores, o simplemente no funciona. Por ejemplo, he intentado descargar el siguiente repositorio de Github github.com/nanorc/nanorc.git con el siguiente comando:

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

y luego seguir los pasos en este puesto pero he tenido errores porque algunos comandos dentro de los archivos no son reconocidos. En particular, si añado 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 previos, tales STRING , ESCAPE etc., no son reconocidos.

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

0 votos

¿Qué ocurre si copias el texto en ~/.nanorc y no utilizas un include?

3voto

wisbucky Puntos 122

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

  1. Instalar homebrew: https://brew.sh/
  2. Instala el 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"

1voto

Richard Keller Puntos 1283

Del archivo del hombre de Nanorc(5):

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

A tu nanorc le falta eso.

El imbécil me leyó de ese repo:

¿Por qué tengo errores raros al correr nano < 2.1.5 en sistemas *BSD?
Para poder resaltar de forma fiable las palabras clave, este proyecto hace un uso intensivo de las extensiones de límite de palabras de GNU regex (\< y >). Las implementaciones de BSD también tienen estas extensiones pero usan una sintaxis diferente e incompatible ([[:<:]] y [[:>:]]). 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 para el 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 ser traducido instalando con make BSDREGEX=1.

Lo que está sucediendo es que no seguiste los comandos de instalación completa . Si clonaste el git, lo grabaste en el directorio y ejecutaste make install, tus archivos de sintaxis se verían diferentes. Para empezar, la versión por defecto de nano en OS X (estoy en 10.10.5 Mavericks) es nano 2.0.6 . No apoya el encabezado en la sintaxis de esta versión anterior. El archivo para el repo de git eliminaría eso. Y añadiría las opciones de color.

Tienes tres opciones.

  1. Asegúrate de que tienes las herramientas de línea de comandos de OS X (o el Código X completo) instaló y ejecutó todos los comandos de instalación.
  2. usar archivos de sintaxis nanorc precompilados compatibles con el nano 2.0.6 preinstalado con BSD regex.
  3. Instala un nuevo nano, y usa el nanorc que viene con la instalación completa.

Como bonus, 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:]]+$"

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X