Editores de terminal — nano y vim

Por qué necesitas editar en la terminal

Tarde o temprano vas a estar frente a una situación donde el ratón y el IDE no existen:

  • Servidor remoto via SSH — sin entorno gráfico, sólo shell.
  • Editar un fichero de configuración como rootsudo nano /etc/fstab. Abrir gedit como root es una mala práctica y muchas veces ni funciona.
  • El sistema arrancó en modo recovery — sólo tienes una TTY.
  • Rapidez en el día a día — cambiar una línea en un config sin abrir VS Code tarda 2 segundos, no 10.

Regla práctica: nano para vivir, vim para sobrevivir. Aprende nano en 5 minutos. Aprende lo mínimo de vim para no quedar atrapado cuando alguien lo abra por ti.


NANO — el editor amigable

Abrir nano

nano fichero.txt          # abre (o crea) el fichero
nano /etc/apt/sources.list  # editar config del sistema (como root si hace falta)
sudo nano /etc/hosts      # con sudo si necesitas permisos

Al abrir, ves el contenido directamente editable — sin modos, sin ceremonias. Escribes y ya.

Interfaz de nano

  GNU nano 7.x          fichero.txt          Modified

[contenido del fichero aquí — editable directamente]

^G Help    ^O Write Out  ^W Where Is  ^K Cut     ^T Execute
^X Exit    ^R Read File  ^\ Replace   ^U Paste   ^J Justify
  • ^ = Ctrl. ^O significa Ctrl+O.
  • La barra inferior te recuerda los atajos en todo momento. Es intencionalmente amigable.

Tabla de atajos esenciales de nano

AtajoAcción
Ctrl+OGuardar (Write Out). Confirma el nombre con Enter.
Ctrl+XSalir. Si hay cambios sin guardar, pregunta.
Ctrl+XY → EnterGuardar y salir en un flujo
Ctrl+WBuscar texto (Where Is). Enter para siguiente coincidencia.
Ctrl+\Buscar y reemplazar
Ctrl+KCortar la línea entera (Cut Line)
Ctrl+UPegar lo cortado (Uncut/Paste)
Ctrl+K × N vecesCortar N líneas consecutivas — se acumulan al pegar
Ctrl+6Marcar inicio de selección (luego mueve cursor para seleccionar)
Alt+GIr a número de línea (Go to Line)
Alt+UDeshacer (Undo) — nano ≥ 2.4
Alt+ERehacer (Redo)
Ctrl+CMostrar posición actual (línea y columna) — NO cierra
Ctrl+_Ir a línea:columna específica (alternativa a Alt+G)
Page Up / Page DownDesplazarse por el fichero
Ctrl+HomeIr al inicio del fichero
Ctrl+EndIr al final del fichero

Gotcha nano

  • Ctrl+C en nano no cierra el editor, sólo muestra la posición. Para salir: Ctrl+X.
  • Si guardas con Ctrl+O, nano te propone el mismo nombre de fichero — pulsa Enter para confirmar. Si escribes otro nombre, crea un fichero nuevo.
  • En servidores remotos puede aparecer como nano o como pico (eran el mismo editor en origen).

VIM — por qué existe y por qué asusta

vim (Vi IMproved) nació en 1991 y está en absolutamente todos los sistemas Unix/Linux, incluso los más mínimos (donde nano puede no estar). Es el editor que encontrarás si alguien ejecuta git commit sin configurar $EDITOR, o si abres un crontab (crontab -e) en un sistema sin configurar.

La razón por la que asusta: vim es modal. No hay modo “estoy escribiendo texto”. Hay que cambiar de modo explícitamente. Si no lo sabes, pareces estar atrapado.

Los modos de vim

                      ┌─────────────────────┐
                      │    MODO NORMAL       │  ← donde arrancas siempre
                      │  (navegar, operar)   │
                      └──────┬──────┬────────┘
                             │      │
               i / a / o     │      │  :
                             ▼      ▼
                    ┌────────────┐ ┌──────────────┐
                    │   INSERT   │ │   COMANDO    │
                    │ (escribir) │ │ (:w :q :wq)  │
                    └────────────┘ └──────────────┘
                         Esc ──────────┘
ModoCómo entrarQué puedes hacer
NormalEsc (siempre funciona)Navegar, copiar, borrar, buscar
Insertari, a, o (desde Normal)Escribir texto
Comando: (desde Normal)Guardar, salir, reemplazar global
Visualv (desde Normal)Seleccionar texto

Regla de oro: cuando no sabes en qué modo estás, pulsa Esc una o dos veces. Siempre vuelves a Normal.

Entrar y salir de vim — lo mínimo vital

vim fichero.txt    # abrir
vi fichero.txt     # alias clásico (en Ubuntu 24.04, vi es vim)

Al abrir, estás en modo Normal. El cursor no escribe.

Para escribir texto:

  • i — insertar antes del cursor
  • a — insertar después del cursor (append)
  • o — abrir línea nueva debajo y entrar a insertar
  • (ves -- INSERT -- en la barra inferior cuando estás en modo insertar)

Para volver a Normal: Esc

Para guardar y salir (desde Normal, escribe :):

ComandoAcción
:wGuardar (write) sin salir
:qSalir (quit) — sólo si no hay cambios
:wq o :xGuardar y salir
:q!Salir sin guardar — el escape de emergencia
:w !sudo tee %Guardar fichero de root que abriste sin sudo

Si sólo recuerdas una cosa de vim: Esc + :q! + Enter te saca siempre, sin guardar nada.

No uses las flechas del teclado en vim — existen, pero son lentas conceptualmente. La navegación es:

TeclaMovimiento
hizquierda
jabajo
karriba
lderecha
wsiguiente palabra (word)
bpalabra anterior (back)
0inicio de línea
$fin de línea
ggir al inicio del fichero
Gir al final del fichero
5Gir a la línea 5 (número + G)
Ctrl+Fpágina siguiente (Forward)
Ctrl+Bpágina anterior (Back)

Operaciones de edición en modo Normal

TeclaAcción
ddCortar (borrar) línea entera
yyCopiar línea entera (yank)
pPegar después del cursor
PPegar antes del cursor
uDeshacer (undo)
Ctrl+rRehacer (redo)
xBorrar carácter bajo el cursor
dwBorrar desde cursor hasta fin de palabra
DBorrar desde cursor hasta fin de línea
cwCambiar palabra (borra y entra a insertar)
.Repetir el último cambio

Buscar en vim

Desde modo Normal:

/patrón    → buscar hacia adelante (Enter para confirmar)
?patrón    → buscar hacia atrás
n          → siguiente coincidencia
N          → coincidencia anterior

Ejemplo: buscar “puerto” en un config → /puerto + Enter, luego n para ir avanzando.

Mínimo viable para sobrevivir vim

Si te encuentras en vim sin haberlo elegido:

  1. Esc (uno o dos veces) — asegúrate de estar en Normal.
  2. Si no quieres guardar: :q! + Enter. Fin.
  3. Si sí quieres guardar: :wq + Enter.
  4. Si no pasa nada al escribir : — estás en Insert. Pulsa Esc primero.

Configurar el editor por defecto

Muchas herramientas (git, crontab, visudo, variables de entorno) respetan $EDITOR.

Variable de entorno $EDITOR

# Ver cuál está configurado ahora
echo $EDITOR
 
# Cambiar temporalmente (sólo para la sesión actual)
export EDITOR=nano
 
# Cambiar permanentemente — añadir a ~/.bashrc o ~/.bash_profile
echo 'export EDITOR=nano' >> ~/.bashrc
source ~/.bashrc

update-alternatives (Ubuntu/Debian)

Ubuntu gestiona el binario /usr/bin/editor con el sistema de alternativas:

# Ver qué editor está configurado como predeterminado
sudo update-alternatives --display editor
 
# Cambiar el editor del sistema de forma interactiva
sudo update-alternatives --config editor
# Muestra una lista numerada; escribe el número de nano y Enter.

Esto afecta a herramientas que llaman a editor o sensible-editor (como visudo si no tiene $EDITOR seteado).

Para git concretamente

git config --global core.editor nano
# o
git config --global core.editor "vim"

Cuándo usar cada uno

SituaciónEditor recomendadoPor qué
Editar un fichero de config rápidonanoSin fricción, sin modos
Servidor remoto donde sólo existe vivim (mínimo vital)No hay alternativa
Editar crontab o sudoersnano (tras configurar $EDITOR)Menos riesgo de guardar accidentalmente algo roto
Edición pesada en terminal (refactor, macros)vimSu potencia lo justifica cuando ya lo conoces
Sistema de recovery / initramfsvim o busybox vinano puede no estar
git commit / rebase interactivonano (para empezar)Evita confusión con modos de vim

Gotchas generales

  • vim en modo reemplazar: si pulsas Insert en modo Normal, entras a -- REPLACE -- (sobreescribe caracteres). Sal con Esc.
  • vim pide contraseña de sudo en :w: si abriste un fichero sin permisos, usa :w !sudo tee % para guardar igualmente.
  • nano en SSH con Ctrl+S: en algunos terminales Ctrl+S congela el flujo de terminal (XOFF). Si nano deja de responder, Ctrl+Q lo desbloquea.
  • vi vs vim: en Ubuntu 24.04, vi es un alias de vim. En sistemas mínimos puede ser vi real (busybox), que tiene menos funciones. Los comandos :wq y :q! funcionan en ambos.
  • Modos de vim en neovim: si en algún servidor ves nvim, los comandos son idénticos — neovim es un fork compatible.

Conexiones