Entrada

GNU Nano: Tu editor amigo

Nano es un editor de texto en la terminal que destaca por su simplicidad.

Si alguna vez abriste un archivo en vi o vim y te quedaste mirando la pantalla como si fuera un acertijo del más allá…

Tranquilo, no eres el único. Todos alguna vez caímos en esa trampa.

🧡 En este artículo vas a conocer a otro amigo: GNU nano.

Ese que no te juzga, no te enreda con comandos extraños y que desde el primer momento te dice cómo salir. Literalmente, los atajos están ahí abajo, mirándote con cariño. 👇

Salir de Nano

¿Qué es GNU Nano?

El editor Nano (oficialmente GNU nano) es un ligero editor de texto de línea de comandos muy amigable. Aunque a simple vista parece una herramienta básica, ofrece funciones muy útiles y es una excelente opción para editar archivos de configuración, crear scripts o lanzadores.

Si bien no está pensado específicamente para programación, el soporte para coloreado de sintaxis permite utilizarlo ocasionalmente para escribir código.

¿Por qué usar GNU nano?

  • Porque es simple, directo y amigable.
  • Viene instalado por defecto en la mayoría de distros Linux.
  • No tienes que “aprender a usarlo”, simplemente lo usás.

En Windows puedes usar nano desde entornos como Git Bash, WSL o instalarlo con Chocolatey. En macOS se puede usar desde la terminal directamente (ya viene instalado en muchas versiones).

Para comprobar que GNU nano está instalado y verificar su versión, ejecuta el siguiente comando:

1
nano --version

Abrir y Editar Archivos

En la mayoría de distribuciones GNU/Linux, Nano ya viene preinstalado por defecto, así que no necesitás instalar nada para empezar a usarlo. Lo único que necesitás es tu terminal.

Abrir la terminal

  • En Ubuntu o Debian: presionas Ctrl+Alt+T.
  • En otras distribuciones, busca “Terminal” en el menú de aplicaciones.
  • En macOS: abre el Spotlight Cmd+Space y escribes “Terminal”.
  • En Windows: si usas Git Bash, WSL o PowerShell, también puedes abrirlo desde el menú de inicio.

Una vez dentro de la terminal, usa el siguiente comando:

1
nano nombre_del_archivo.txt

📂 Si el archivo existe, lo vas a abrir para editar.
📄 Si no existe, Nano lo va a crear automáticamente por tí.

Si deseas abrir un archivo que se encuentra en otra carpeta, debes especificar la ruta en el comando:

1
nano /ruta/destino/carpeta/nombre_del_archivo.txt

Una vez dentro, puedes escribir directamente:

editando en nano

Abrir Múltiples Archivos

Para abrir más de un archivo en el editor, se pasan estos como argumentos separados despues del comando nano. Ejemplo:

1
nano archivo_1.txt archivo_2.txt

Para que esta opción de abrir más archivos funcione, debe estar habilitada la opción de multibuffer en el archivo .nanorc. Ejemplo: set multibuffer

Moverse entre Archivos

Puedes cambiar entre archivos abiertos en el buffer con la siguiente combinación:

  • ALT+ (RIGHT): Ir hacia el siguiente archivo
  • ALT+ (LEFT): Ir hacia el anterior anterior

Primer archivo Primer archivo (1/2)

Primer archivo Segundo archivo (2/2)

Cambiar el Cursor al Abrir Archivos

Nano también puede abrir archivos colocando el cursor en una línea o buscando una palabra específica, muy útil para editar archivos largos o navegar rápidamente a una sección del archivo.

Ir a una Palabra Específica

Si conoces la palabra que quieres cambiar, puedes ir directamente a esa palabra.

Para indicar una cadena de búsqueda al abrir un archivo, se debe aplicar de la siguiente manera:

1
nano +c/palabra archivo.txt

abrir con cursor en palabra abrir archivo con cursor en palabra específica

El prefijo +c/ le dice a Nano que realice una búsqueda con la palabra indicada a continuación.

Ir a una Línea Específica al Abrir un Archivo

Si conoces el número de línea al que quieres ir, puedes indicarlo así:

1
nano +10 archivo.txt

Esto abrirá archivo.txt y posicionará el cursor directamente en la línea 10.

Como caso especial: si en lugar de un nombre de archivo se da un guión (-), nano leerá los datos de la entrada estándar.

Abrir Archivos Desde Nano

Sin embargo, si quieres abrir un archivo estando dentro de Nano, puedes utilizar el atajo de teclado predeterminado (CTRL+R).

Abrir desde editor

Ahora bien, una vez que se nos solicita el nombre del archivo, podemos utilizar el atajo de teclado Ctrl+T para abrir un explorador de archivos, donde podremos desplazarnos hasta encontrar el archivo que necesitamos.

En ese modo, también es posible presionar Ctrl+/ para escribir un patrón de búsqueda o cambiar de directorio fácilmente:

Abrir desde editor 2

Opciones y Atajos de Teclado

Moverse en diferentes direcciones en el texto

Teclas ⌨️​Descripción
CTRL+F o (RIGHT)Ir hacia siguiente letra
CTRL+B o (LEFT)Ir una letra atrás
CTRL+P o (UP)Subir una línea
CTRL+N o (DOWN)Bajar una línea
CTRL+A o HomeIr al inicio de línea actual
CTRL+E o EndIr al final de línea actual
CTRL+M o EnterInserta un retorno de carro en la posición del cursor
CTRL+I o TABTabular el cursor
CTRL+YIr al inicio de la página actual
CTRL+ (RIGHT)Ir hacia la siguiente palabra
CTRL+ (LEFT)Ir hacia la palabra anterior
ALT+GIr hacia el número de la línea indicada en el prompt

Edición (copiar, pegar, cortar, deshacer, rehacer, etc)

Teclas ⌨️Descripción
ALT+UDeshacer
ALT+ERehacer
CTRL+KCortar
ALT+TCortar desde la posición del cursor hasta el final de la línea
CTRL+UPegar
CTRL+OGuardar como

Buscar, insertar, remplazar texto, justificar, seleccionar

Teclas ⌨️Descripción
CTRL+W o F6Busca la cadena de caracteres y sitúa el cursor en la coincidencia.
ALT+QIr a la ocurrencia anterior de la última búsqueda
ALT+WIr a la siguiente ocurrencia de la última búsqueda
ALT+GIr a un número de línea en concreto
CTRL+R - CTRL+TInsertar el contenido de otro archivo de origen en la posición del cursor
ALT+RRemplazar el texto buscado
Alt+JJustifica todo el texto
Ctrl+JJustifica La línea actual
ALT+AActiva el cursor en modo selección

Habilitar o deshabilitar configuraciones del editor

Teclas ⌨️Descripción
ALT+CHabilitar | Deshabilitar la barra de status al pie de la pantalla
ALT+IHabilitar | Deshabilitar autoindent
ALT+XHabilitar | Deshabilitar la ayuda al pie de la pantalla
ALT+XHabilitar | Deshabilitar el coloreado de sintaxys
ALT+OHabilitar | Deshabilitar la conversión de Tabs a espacios
ALT+NHabilita la numeración en el editor de líneas
Ctrl+MHabilitar | Deshabilitar el soporte del Mouse en el editor
ALT+ZHabilitar | Deshabilitar supensión del editor
ALT+SHabilitar | Deshabilitar ajuste de líneas suave del editor
ALT+PHabilitar | Deshabilitar mostrar espacios en blancos

Información y otros

Teclas ⌨️Descripción
ALT+DMuestra información del total de caracteres, palabras y líneas del texto en la barra de status
CTRL+CMuestra la información de la posición actual del cursor en el texto (línea/columna/carácter)
CTRL+LRedibujar la pantalla
CTRL+GAbre el menú de ayuda del nano. Q Para cerrar el menú de ayuda del nano
CTRL+TEjecuta un comando, si el comando ingresado en el prompt devuelve un output lo pega en la posición del cursor en el archivo actual (disponible en Windows).
CTRL+X o F2Cerrar nano, nos pregunta si guardamos los cambios

Redefinir atajos de teclado

Si no terminas de convencerte con los atajos de teclado predeterminados, siempre puedes sobreescribir la configuración para que se comporte como nosotros queremos.

El formato de key debe ser:

  • \^X : donde X es una letra, o uno de varios caracteres ASCII (@,],\,\^,_), o la palabra Space
    Ej: esto es equivalente a CTRL+X

  • M-X : donde X es cualquier carácter ASCII excepto [
    Ej: esto es equivalente a ALT+X

  • Sh-M-X : donde X es cualquier carácter ASCII
    Ej: esto es equivalente a SHIFT+ALT+X

  • Fn : donde n es cualquier valor numérico de 1 al 24
    Ej: F2 es equivalente a F2

La forma de redifinir un atajo de teclado es: bind key function menu

Por ejemplo, para que las funciones copiar y pegar sean los atajos tradicionales (CTRL+C y CTRL+V), tendríamos que añadir la siguiente línea a nuestro archivo .nanorc:

1
2
bind ^C copy main
bind ^V paste all

La forma que se desvincula un atajo de menu (o de todos los menús donde existe la tecla, se usa all) es: unbind key menu

1
2
unbind ^C all
unbind ^V all

Estos son algunos bind que yo tengo definido en el archivo ~/.nanorc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# [Binding]
# [-- Actions --]
bind ^Q exit all # Salir del editor
bind ^S savefile main # Guardar
#bind ^B gotodir browser # Explorador 
#bind ^O insert main #  Abre un archivo (multibuffer) o inserta texto de un archivo
#bind ^P location main # Informa la posición actual del cursor
bind ^K comment main # Comenta o descomenta la línea actual o las líneas marcadas.
bind ^Space complete main # Completa (cuando es posible) el fragmento de la palabra del búfer actual

# [-- Edit --]
bind ^C copy main # Copiar
bind ^V paste all # Pegar
bind ^X cut all # Cortar
bind ^Z undo main # Deshacer
bind ^E redo main # Rehacer
#bind ^R replace main # Remplazar

# [-- Strings --]
# [Python]
bind Sh-M-P "print("")" main

# [HTML]
bind M-1 "<h1></h1>" main
bind M-2 "<h2></h2>" main
bind M-3 "<h3></h3>" main
bind M-4 "<h4></h4>" main
bind M-5 "<h5></h5>" main
bind M-6 "<h6></h6>" main

Archivo .nanorc para la configuración (usuario)

Para crear el archivo sencillamente introduce el siguiente comando:

1
touch ~/.nanorc

Para editarlo con nano introduce el siguiente comando:

1
nano ~/.nanorc

Dentro ya podríamos agregar cualquiera de las opciones que se listan a continuación:

OpciónDescripciónPredeterminado
set autoindentHabilita la indentación automáticaNo
set backupGuarda copias del archivo en edición con el mismo nombre (pero finalizado en ~)No
set backupdir directoryHace y mantiene una copia de seguridad de cada archivo cuando lo guardamosNo
set historylogHabilita el uso de ~/.nano/search_history para guardar y leer las cadenas de búsqueda y remplazoNo
set constantshowMuestra la posición del cursor en la barra de estadoNo
set justifytrimCuando se justifica texto, los espacios que se encuentran a la derecha se eliminarán automáticamenteNo
set nohelpNo muestra la ayuda al pie de la pantallaNo
set nonewlinesNo agrega automáticamente una nueva línea al final de los archivosNo
set linenumbersHabilita la numeración en cada líneaNo
set tabsize 0-9Define el tamaño de la tabulación8
set titlecolor fg,bgCambia el color de la barra de título del editorwhite,blue
set statuscolor fg,bgCambia el color de la barra de status inferior que se muestran en el editorwhite,green
set numbercolor fg,bgCambia el color de la numeración del editor en cada líneacyan,black
set keycolor fg,bgCambia el color de los accesos directo que muestra en la parte inferior el editorcyan,black
set functioncolor fg,bgCambia el color de las funciones de los accesos directo que se muestran en la parte inferior del editorgreen,black
set softwrapHabilita el ajuste de líneas suaveNo
set positionlogGuarda la posición del cursorNo
set boldtextUtiliza las negritas para el título, barra de estado, etc.No

Mis preferencias de las opciones que más uso:

1
2
3
4
5
6
7
8
9
10
11
12
# [Editor]
set fill 0
set multibuffer
set linenumbers
set softwrap
set boldtext
set tabsize 4
set titlecolor lightred,lightblack
set statuscolor yellow
set numbercolor lightred
set keycolor yellow
set functioncolor lightred

Coloreado de sintaxis para Nano

Nano contiene por defecto varios archivos de configuración, ubicados comúnmente en el directorio /usr/share/nano/ o /etc/nano/, que vienen con las definiciones de sintaxis para diferentes lenguajes de programación y formatos de archivo. Estos archivos tienen nombres como python.nanorc, html.nanorc, bash.nanorc, entre otros, y especifican cómo deben colorearse palabras clave, comentarios, cadenas, etc.

En Linux:

archivos nanorc

Además, Nano permite personalizar aún más estas reglas o incluir nuevas, ya sea editando los archivos existentes o creando tus propios archivos .nanorc. Para que Nano aplique estas configuraciones automáticamente al abrir archivos, es común incluir directivas include en el archivo de configuración del usuario: (~/.nanorc), como por ejemplo:

1
include "/usr/share/nano/python.nanorc"

Esto le indica a Nano que cargue el resaltado de sintaxis definido para Python cada vez que se edite un archivo .py

Un comando sencillo que nos va a incluir todos los complementos de resaltado de sintaxis incluidos de forma predeterminada, y todos los que agregue a /usr/share/nano:

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

Resaltado de Sintaxis

Colorear los diferentes elementos sintácticos de un archivo se realiza a través de expresiones regulares. Esto es inherente imperfecto, porque las expresiones regulares no son lo suficientemente poderosas para analizar completamente un archivo. Sin embargo, las expresiones regulares pueden hacer mucho y son fáciles de hacer, por lo que son una buena opción para un editor pequeño como Nano.

Para cada tipo de archivo se puede definir una sintaxis separada a través de los siguientes comando. Comience la definición de una sintaxis con este nombre:

1
syntax "nombre" [" fileregex " ...] 

Cuando se ejecuta Nano, esta sintaxis se activarás automáticamente si el nombre de archivo actual coincide con la expresión regular.

1
header "regex" ...

Si de todas las sintaxis definidas no coincide ningún fileregex, entonces compare este regex (o regex) con la primera línea del archivo actual, para determinar si esta sintaxis debe usarse para él.

1
comment "string"

Use la cadena dada para comentar y descomentar líneas. Si la cadena contiene un carácter de barra vertical \ o de tubería |, esto designa comentarios de estilo corchete. Por ejemplo "/*|*/" para archivos CSS, "#" para archivos de Python.

1
color fgcolor,bgcolor "regex"...

Aplica el color de primer plano y el fondo especificados a todas las coincidencias declaradas en la expresión regular.

1
icolor fgcolor,bgcolor "regex"...  

Igual que color, excepto que la coincidencia no distingue entre mayúsculas y minísculas.

Extras

Presionamos CTRL+T e introducimos el comando adecuado:

  • Ejecutar un script de python y volcar su resultado en un Buffer
    1
    
    start python -i script.py
    
Esta entrada está licenciada bajo CC BY 4.0 por el autor.