¿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.

Oxwivi
fuente
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.

Nitin Venkatesh
fuente
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.

Craig Barnes
fuente
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.
Drew Chapin
fuente
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.

NotorioPyro
fuente
2

Tengo algunos resaltados de sintaxis nano en mi github .

Hay capturas de pantalla de ejemplo en vivo para html y php:

ingrese la descripción de la imagen aquí

y

ingrese la descripción de la imagen aquí

Eric Leschinski
fuente
2

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

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

¡Feliz codificación!

Norbert Mezei
fuente
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
usuario170859
fuente
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
Raveren
fuente
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)\>"
(...)
dmvianna
fuente
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.

Forrest Erickson
fuente
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.

Thomas Weller
fuente
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.

László Péter Varga
fuente
-1

Acabo de hacer este script para agregar los colores a nano: Pero, por supuesto, debes tener los códigos de color en / usr / share / nano para que esto funcione. Si hay errores: solo edite manualmente el archivo ~ / .nanorc y elimine las líneas que dan los errores.

#!/bin/bash

for i in `ls /usr/share/nano`
  do
    echo "include /usr/share/nano/$i" >> ~/.nanorc
  done
some_random_guy
fuente