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. 👇
¿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:
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
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 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).
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:
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 Home | Ir al inicio de línea actual |
CTRL+E o End | Ir al final de línea actual |
CTRL+M o Enter | Inserta un retorno de carro en la posición del cursor |
CTRL+I o TAB | Tabular el cursor |
CTRL+Y | Ir al inicio de la página actual |
CTRL+→ (RIGHT) | Ir hacia la siguiente palabra |
CTRL+← (LEFT) | Ir hacia la palabra anterior |
ALT+G | Ir hacia el número de la línea indicada en el prompt |
Edición (copiar, pegar, cortar, deshacer, rehacer, etc)
Teclas ⌨️ | Descripción |
---|---|
ALT+U | Deshacer |
ALT+E | Rehacer |
CTRL+K | Cortar |
ALT+T | Cortar desde la posición del cursor hasta el final de la línea |
CTRL+U | Pegar |
CTRL+O | Guardar como |
Buscar, insertar, remplazar texto, justificar, seleccionar
Teclas ⌨️ | Descripción |
---|---|
CTRL+W o F6 | Busca la cadena de caracteres y sitúa el cursor en la coincidencia. |
ALT+Q | Ir a la ocurrencia anterior de la última búsqueda |
ALT+W | Ir a la siguiente ocurrencia de la última búsqueda |
ALT+G | Ir a un número de línea en concreto |
CTRL+R - CTRL+T | Insertar el contenido de otro archivo de origen en la posición del cursor |
ALT+R | Remplazar el texto buscado |
Alt+J | Justifica todo el texto |
Ctrl+J | Justifica La línea actual |
ALT+A | Activa el cursor en modo selección |
Habilitar o deshabilitar configuraciones del editor
Teclas ⌨️ | Descripción |
---|---|
ALT+C | Habilitar | Deshabilitar la barra de status al pie de la pantalla |
ALT+I | Habilitar | Deshabilitar autoindent |
ALT+X | Habilitar | Deshabilitar la ayuda al pie de la pantalla |
ALT+X | Habilitar | Deshabilitar el coloreado de sintaxys |
ALT+O | Habilitar | Deshabilitar la conversión de Tabs a espacios |
ALT+N | Habilita la numeración en el editor de líneas |
Ctrl+M | Habilitar | Deshabilitar el soporte del Mouse en el editor |
ALT+Z | Habilitar | Deshabilitar supensión del editor |
ALT+S | Habilitar | Deshabilitar ajuste de líneas suave del editor |
ALT+P | Habilitar | Deshabilitar mostrar espacios en blancos |
Información y otros
Teclas ⌨️ | Descripción |
---|---|
ALT+D | Muestra información del total de caracteres, palabras y líneas del texto en la barra de status |
CTRL+C | Muestra la información de la posición actual del cursor en el texto (línea/columna/carácter) |
CTRL+L | Redibujar la pantalla |
CTRL+G | Abre el menú de ayuda del nano. Q Para cerrar el menú de ayuda del nano |
CTRL+T | Ejecuta 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 F2 | Cerrar 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+XM-X
: donde X es cualquier carácter ASCII excepto [
Ej: esto es equivalente a ALT+XSh-M-X
: donde X es cualquier carácter ASCII
Ej: esto es equivalente a SHIFT+ALT+XFn
: 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ón | Descripción | Predeterminado |
---|---|---|
set autoindent | Habilita la indentación automática | No |
set backup | Guarda copias del archivo en edición con el mismo nombre (pero finalizado en ~ ) | No |
set backupdir directory | Hace y mantiene una copia de seguridad de cada archivo cuando lo guardamos | No |
set historylog | Habilita el uso de ~/.nano/search_history para guardar y leer las cadenas de búsqueda y remplazo | No |
set constantshow | Muestra la posición del cursor en la barra de estado | No |
set justifytrim | Cuando se justifica texto, los espacios que se encuentran a la derecha se eliminarán automáticamente | No |
set nohelp | No muestra la ayuda al pie de la pantalla | No |
set nonewlines | No agrega automáticamente una nueva línea al final de los archivos | No |
set linenumbers | Habilita la numeración en cada línea | No |
set tabsize 0-9 | Define el tamaño de la tabulación | 8 |
set titlecolor fg,bg | Cambia el color de la barra de título del editor | white,blue |
set statuscolor fg,bg | Cambia el color de la barra de status inferior que se muestran en el editor | white,green |
set numbercolor fg,bg | Cambia el color de la numeración del editor en cada línea | cyan,black |
set keycolor fg,bg | Cambia el color de los accesos directo que muestra en la parte inferior el editor | cyan,black |
set functioncolor fg,bg | Cambia el color de las funciones de los accesos directo que se muestran en la parte inferior del editor | green,black |
set softwrap | Habilita el ajuste de líneas suave | No |
set positionlog | Guarda la posición del cursor | No |
set boldtext | Utiliza 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:
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