¿Cómo habilito el resaltado de sintaxis en nano?


184

¿Puede nano resaltar la sintaxis como gedit y vim? ¿Cómo puedo habilitarlo? Necesito al menos los aspectos más destacados de la sintaxis de bash y python.


1
Muchas gracias por los archivos de sintaxis en el repositorio de git, lo uso en todos mis servidores ahora ... ¡sigan con el buen trabajo!

1
@TheGene Comenta y agradece la respuesta. El repositorio se le atribuye a él, no a mí, el que hace la pregunta.
Oxwivi

Respuestas:


175

El editor nano proporciona resaltado de sintaxis para algunos idiomas y scripts por sí mismo. Revisa/usr/share/nano/

nits@nits-excalibur:~$ ls /usr/share/nano/
asm.nanorc     fortran.nanorc   man.nanorc     ocaml.nanorc   ruby.nanorc
awk.nanorc     gentoo.nanorc    mgp.nanorc     patch.nanorc   sh.nanorc
c.nanorc       groff.nanorc     mutt.nanorc    perl.nanorc    tcl.nanorc
cmake.nanorc   html.nanorc      nano-menu.xpm  php.nanorc     tex.nanorc
css.nanorc     java.nanorc      nanorc.nanorc  pov.nanorc     xml.nanorc
debian.nanorc  makefile.nanorc  objc.nanorc    python.nanorc

Vincúlelos al archivo de configuración nano de su usuario presente en ~/.nanorcalgo similar a esta línea:

nits@nits-excalibur:~$ cat ~/.nanorc
include /usr/share/nano/sh.nanorc

Ahora, el resaltado de sintaxis está habilitado en nano para cualquier archivo que haya vinculado (también puede vincular varios archivos)

captura de pantalla de resaltado de sintaxis

Nota: a veces puede aparecer un segmentation faultmensaje después de haber editado su ~/.nanorcarchivo. Si se produce un error de este tipo, ayuda a desarmar la variable de entorno LANG . Puede desactivarlo unset LANGen la terminal. (Solución obtenida de aquí )

También hay otras soluciones si no está satisfecho con su resaltado bash. Un ejemplo de esto se puede encontrar aquí

También puede escribir include /usr/share/nano/*en el archivo ~ / .nanorc para permitir que todos los idiomas se resalten si su versión nano lo admite.


1
Esas líneas no están comentadas /etc/nanorc: ¿se sobrescribe la configuración global ~/.nanorc? ¿Cómo deshabilito .nanorc?
Oxwivi

13
Oh, espera, ni siquiera tengo un ~/.nanorcarchivo.
Oxwivi

1
Espera, espera, ¿cómo es que la configuración global con todas las includelíneas no permite resaltar la sintaxis aunque no lo haya hecho .nanorc?
Oxwivi

99
ls -1 /usr/share/nano/*.nanorc | sed 's/^\//include \//' >> ~/.nanorcagréguelos a su archivo .nanorc o créelo si no existe.
Thom Porter

99
include /usr/share/nano/*no funciona
Jarek Jakubowski

74

Sí, puede, sin embargo, las definiciones de sintaxis predeterminadas son bastante pobres e incompletas. Aquí mantengo un conjunto de definiciones más preciso , para cualquiera que las encuentre útiles.

Para instalar, ejecute:

git clone https://github.com/nanorc/nanorc.git
cd nanorc
make install

Agregue estas líneas a ~ / .nanorc

include ~/.nano/syntax/html.nanorc
include ~/.nano/syntax/css.nanorc
include ~/.nano/syntax/php.nanorc
include ~/.nano/syntax/ALL.nanorc

Especifique los que desea colorear y tendrá que ajustar estos colores a sus preferencias. El ALL.nanorcdescribe características para todos los archivos aún no clasificados. Estas son las herramientas que necesita para comenzar, no el producto final pulido.


66
Gracias por mantener esas buenas definiciones de sintaxis en GitHub.
Rubens Mariuzzo

3
Mis archivos * .js no funcionaban ... editado / etc / nanorc para eliminar cualquier otra sintaxis incluida según las Preguntas frecuentes github.com/nanorc/… . ♥ Nano ♥ nanorc
Carlton

55
Acabo de instalar su sintaxis defs en Mac OSX. Solo hay una cosa que notaría, que es el color negro del corchete abierto en Python que se pierde contra el fondo negro de mi terminal
Tom Busby

55
En realidad hay un problema, ¡parte del texto coloreado es negro! Si nuestro fondo terminal es negro, ¡estas palabras son invisibles!
dukevin

99
Tienes un enlace muerto
not2qubit el

52

Usé este comando para habilitar rápidamente todos los idiomas disponibles.

find /usr/share/nano/ -iname "*.nanorc" -exec echo include {} \; >> ~/.nanorc

Como se menciona en otras respuestas, /usr/share/nano/contiene las definiciones para diferentes idiomas.

$ ls /usr/share/nano
asm.nanorc     fortran.nanorc   man-html       ocaml.nanorc   ruby.nanorc
awk.nanorc     gentoo.nanorc    man.nanorc     patch.nanorc   sh.nanorc
cmake.nanorc   groff.nanorc     mgp.nanorc     perl.nanorc    tcl.nanorc
c.nanorc       html.nanorc      mutt.nanorc    php.nanorc     tex.nanorc
css.nanorc     java.nanorc      nanorc.nanorc  pov.nanorc     xml.nanorc
debian.nanorc  makefile.nanorc  objc.nanorc    python.nanorc

También se menciona que, para habilitar el resaltado de un idioma, agrega includey la ruta a la definición de idioma que desea habilitar en su ~/.nanorcarchivo. Entonces, por ejemplo, para habilitar C / C ++, agregaría esta línea.

include /usr/share/nano/c.nanorc

El findcomando busca archivos o directorios dentro del directorio especificado.

  • La -inamebandera le dice que solo busque archivos con un nombre que termine en .nanorc.
  • Las -execbanderas definen un comando para ejecutar en cada archivo encontrado.
  • El {}se reemplaza con el nombre del archivo.
  • \;se usa para indicar el final del comando que se ejecutará en el findcomando.
  • Por último, >> ~/.nanorchace que la salida se agregue a su ~/.nanorcarchivo.

gran consejo y explicación, muchas gracias hombre! ;)
daveoncode

Gracias y no parece que necesites la bandera iname. Lo siguiente parece funcionar también: encontrar /usr/share/nano/*.nanorc
Milind

Thansk mucho!
VIX

7

Esto debería incluir todos los complementos de resaltado de sintaxis incluidos por defecto, y cualquiera que agregue a / usr / share / nano:

find /usr/share/nano -name '*.nanorc' -printf "include %p\n" > ~/.nanorc

O bien, edite / etc / nanorc y vea si puede descomentar las inclusiones.

Esto funciona si tiene una versión de nano que se niega a aceptar comodines en el archivo .nanorc.

Simplemente ejecute esta línea cada vez que agregue una configuración de color .nanorc adicional.



2

Puede usar esto para incluir todo: (agregue esto al archivo ~ / nanorc)

include "/usr/share/nano/*.nanorc"

¡Feliz codificación!


1
wget -r -nH --cut-dirs=3 --no-parent --reject="index.html*" https://nanosyntax.googlecode.com/svn/trunk/syntax-nanorc/ -P ~/.nano-syntax
for i in `ls --color=never -1 ~/.nano-syntax/*.nanorc` ; do echo "include $i" >> ~/.nanorc ; done

22
Sería útil si pudiera explicar por qué esta es una respuesta útil para los usuarios más nuevos. ¿Qué está haciendo el comando? Que cambia Sugerir aleatoriamente ejecutar una línea de comando no es útil.
Kevin Bowen

1

Los hilighters más completa y la sintaxis de fechas para nano se mantienen aquí .

Para instalar todos los marcadores para su usuario, simplemente ejecute:

cd /tmp
git clone https://github.com/tech4david/nano-highlight.git
cd nano-highlight/
make install
echo "include ~/.nano/syntax/ALL.nanorc" >> ~/.nanorc

La solución es buena, pero usaría otra carpeta para git clone. El contenido de la /tmpcarpeta se eliminará en cada inicio del sistema y, por lo tanto, nunca podría ejecutar a git pull.
AB

Tu etiqueta de idioma es incorrecta. jsno es basho shell-scripty he colocado el enlace detrás de la palabra here. ¿Dónde está el problema?
AB

1
@AB no importa si esa carpeta se ha ido ya cuando make installtodos los archivos de sintaxis se copian en el lugar seguro donde pertenecen: ~/.nano/syntax.
Pablo A

1

Para aquellos que tienen problemas después de seguir las instrucciones anteriores, verifique también si tiene definiciones duplicadas . Esto deshabilitará todo el resaltado de sintaxis para todos los archivos . Me encontré con esto después de agregar un nanorc.nanorcarchivo, y sin darme cuenta de que ~/.nanorcya tenía una sección idéntica, es decir:

## Here is an example for nanorc files.
##
syntax "nanorc" "\.?nanorc$"
## Possible errors and parameters
icolor brightwhite "^[[:space:]]*((un)?set|include|syntax|i?color).*$"
## Keywords
icolor brightgreen "^[[:space:]]*(set|unset)[[:space:]]+(autoindent|backup|$
icolor green "^[[:space:]]*(set|unset|include|syntax)\>"
(...)

0

Encontré resaltado de sintaxis para js aquí .

Lo agregué a mi archivo de usuario en ~/.nanorc

Sin embargo, para obtener un archivo en el que pudiera agregar, primero tuve que copiar desde /usr/share/nano/nanorc.nanorcmi carpeta local como ~/.nanorc.


0

Accidentalmente deshabilité el resaltado usando el atajo de teclado Alt+ Y. Se puede volver a encender con el mismo método abreviado de teclado.


0

Sé que es un hilo viejo pero que mi solución pueda ayudar

edite el archivo en / etc / nanorc

Desde la línea 243 puede encontrar muchos archivos de inclusión. Simplemente descomente los que necesita, guarde y listo.

## Nanorc files
include "/usr/share/nano/nanorc.nanorc"

## C/C++
include "/usr/share/nano/c.nanorc"

## Makefiles
include "/usr/share/nano/makefile.nanorc"

## Cascading Style Sheets
include "/usr/share/nano/css.nanorc"

## Debian files
include "/usr/share/nano/debian.nanorc"

## Gentoo files
# include "/usr/share/nano/gentoo.nanorc"

No estoy seguro de que si actualiza nano, estos cambios desaparezcan.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.