Cómo usar el editor Vi/Vim en Ubuntu: una referencia técnica completa
Vi y Vim (Vi Improved) son editores de texto modales controlados por teclado que operan completamente dentro del terminal, lo que los hace indispensables para la administración de servidores, la edición de configuraciones remotas y los flujos de trabajo de scripting en Ubuntu y otras distribuciones Linux. Vim extiende Vi con resaltado de sintaxis, deshacer multinivel, ventanas divididas, soporte de plugins y una capa de configuración scriptable, todo mientras consume recursos del sistema insignificantes.
Si administras un entorno de VPS Hosting o un servidor bare-metal, el dominio de Vim no es opcional — es una habilidad fundamental. Las sesiones SSH no siempre tienen acceso a GUI, y Vim está disponible de forma casi universal en todos los sistemas basados en Unix que alguna vez utilizarás.
Por qué Vim sigue dominando los entornos de servidor
Los IDEs modernos son potentes, pero son irrelevantes cuando estás conectado a un servidor Ubuntu sin cabeza a través de SSH a las 2 AM depurando una configuración de Nginx rota. El diseño modal de Vim significa que cada pulsación de tecla es un comando — no hay dependencia del ratón, no hay sobrecarga de renderizado y no hay latencia introducida por una capa gráfica.
Razones clave por las que los administradores de sistemas confían en Vim:
- Sin dependencias externas: Funciona sobre cualquier conexión SSH, incluyendo enlaces de bajo ancho de banda o alta latencia
- Disponibilidad consistente: Preinstalado o trivialmente instalable en Debian, Ubuntu, CentOS, Alpine y prácticamente cualquier distribución Linux
- Velocidad a escala: Editar archivos de configuración, archivos de registro o scripts de miles de líneas es más rápido en Vim que en cualquier editor GUI una vez que se establece la memoria muscular
- Scriptabilidad: El lenguaje de scripting integrado de Vim (Vimscript) y el soporte de Lua (en Neovim) permiten la automatización completa de tareas de edición repetitivas
Instalación de Vim en Ubuntu
Ubuntu viene con un paquete `vim-tiny` mínimo, que carece de resaltado de sintaxis, soporte multifichero y muchas funciones avanzadas. Para obtener la funcionalidad completa, instala el paquete completo:
“`bash
sudo apt update
sudo apt install vim -y
“`
Para verificar la versión instalada y confirmar el soporte completo de funciones:
“`bash
vim –version
“`
Busca `+syntax`, `+clipboard`, `+python3` y `+multi_byte` en los indicadores de características. Un prefijo `-` significa que esa característica fue compilada fuera del binario. Si necesitas esas características y están ausentes, instala `vim-gtk3` o `vim-nox` en su lugar:
“`bash
sudo apt install vim-nox -y # Headless full-feature build
sudo apt install vim-gtk3 -y # GTK3 build with clipboard integration
“`
Caso límite crítico: En imágenes mínimas de servidor Ubuntu — como las utilizadas en contenedores Docker o Servidores Dedicados arrancados con cloud-init — incluso `vi` puede estar ausente. En ese caso, instala `vim` explícitamente antes de intentar editar cualquier archivo de configuración.
Abrir, crear y recuperar archivos
“`bash
vim filename.txt # Open existing file or create new one
vim /etc/nginx/nginx.conf # Open a system configuration file (use sudo if needed)
sudo vim /etc/ssh/sshd_config # Edit privileged files
vim +42 filename.txt # Open file and jump directly to line 42
vim +/searchterm file.txt # Open file with cursor on first match of searchterm
“`
Recuperación de archivo de intercambio: Vim crea automáticamente un archivo de intercambio oculto (`.filename.txt.swp`) durante la edición. Si tu sesión se bloquea o la conexión SSH se cae, vuelve a abrir el mismo archivo y Vim te pedirá que recuperes los cambios no guardados. Elige siempre `(R)ecover` primero, guarda el contenido recuperado, luego elimina el archivo de intercambio con `:e` seguido de `:!rm ~/.filename.txt.swp` o ejecutando `vim -r filename.txt`.
Este mecanismo de recuperación es especialmente valioso cuando se editan archivos de configuración críticos en servidores de producción — una conexión caída no significa trabajo perdido.
Comprendiendo la arquitectura modal de Vim
El diseño modal de Vim es el concepto más importante a interiorizar. A diferencia de los editores estándar donde cada pulsación de tecla inserta un carácter, Vim separa la navegación, la edición y la ejecución de comandos en modos distintos.
| Modo | Activación | Propósito principal |
|---|
| — | — | — |
|---|
| **Normal** | `Esc` (predeterminado al abrir) | Navegación, eliminación, copia, pegado, ejecución de macros |
|---|
| **Insertar** | `i`, `a`, `o`, `O`, `I`, `A` | Escribir e insertar texto |
|---|
| **Visual** | `v` (carácter), `V` (línea), `Ctrl+v` (bloque) | Seleccionar rangos de texto |
|---|
| **Bloque Visual** | `Ctrl+v` | Selección y edición basada en columnas |
|---|
| **Línea de comandos** | `:` | Operaciones de archivo, búsqueda/reemplazo, configuraciones, comandos externos |
|---|
| **Reemplazar** | `R` | Sobrescribir caracteres existentes |
|---|
| **Ex** | `Q` | Ejecución de comandos por lotes (raramente usado de forma interactiva) |
|---|
El error más común de los principiantes es presionar teclas en modo Normal esperando que aparezca texto, y luego entrar en pánico cuando `dd` elimina una línea o `gg` salta al inicio del archivo. Confirma siempre tu modo actual comprobando la parte inferior izquierda de la pantalla — el modo Insertar muestra `– INSERT –`, el modo Visual muestra `– VISUAL –`, y el modo Normal no muestra nada.
Comandos de navegación en modo Normal
La navegación eficiente es lo que separa a un usuario de Vim que es meramente funcional de uno que es genuinamente rápido. Aprende estos en orden de prioridad:
Movimiento básico del cursor
| Tecla | Acción |
|---|
| — | — |
|---|
| `h` | Mover un carácter a la izquierda |
|---|
| `l` | Mover un carácter a la derecha |
|---|
| `j` | Mover una línea hacia abajo |
|---|
| `k` | Mover una línea hacia arriba |
|---|
| `w` | Saltar al inicio de la siguiente palabra |
|---|
| `b` | Saltar al inicio de la palabra anterior |
|---|
| `e` | Saltar al final de la palabra actual |
|---|
| `0` | Saltar al inicio de la línea |
|---|
| `^` | Saltar al primer carácter que no sea espacio en blanco de la línea |
|---|
| `$` | Saltar al final de la línea |
|---|
Navegación a nivel de archivo
| Tecla | Acción |
|---|
| — | — |
|---|
| `gg` | Saltar a la primera línea del archivo |
|---|
| `G` | Saltar a la última línea del archivo |
|---|
| `:42` | Saltar a la línea 42 |
|---|
| `Ctrl+f` | Desplazar una página completa hacia adelante |
|---|
| `Ctrl+b` | Desplazar una página completa hacia atrás |
|---|
| `Ctrl+d` | Desplazar media página hacia abajo |
|---|
| `Ctrl+u` | Desplazar media página hacia arriba |
|---|
| `%` | Saltar al corchete, paréntesis o llave correspondiente |
|---|
| `*` | Saltar a la siguiente ocurrencia de la palabra bajo el cursor |
|---|
| `#` | Saltar a la ocurrencia anterior de la palabra bajo el cursor |
|---|
Consejo para usuarios avanzados: Precede cualquier comando de movimiento con un número para repetirlo. `5j` baja 5 líneas. `3w` salta 3 palabras hacia adelante. `10dd` elimina 10 líneas. Este multiplicador numérico se aplica a prácticamente todos los comandos del modo Normal y es la clave para editar a velocidad.
Entrar y salir del modo Insertar
| Tecla | Comportamiento |
|---|
| — | — |
|---|
| `i` | Insertar antes del cursor |
|---|
| `a` | Añadir después del cursor |
|---|
| `I` | Insertar al inicio de la línea |
|---|
| `A` | Añadir al final de la línea |
|---|
| `o` | Abrir nueva línea debajo y entrar en modo Insertar |
|---|
| `O` | Abrir nueva línea encima y entrar en modo Insertar |
|---|
| `s` | Eliminar el carácter bajo el cursor y entrar en modo Insertar |
|---|
| `S` | Eliminar la línea completa y entrar en modo Insertar |
|---|
| `Esc` o `Ctrl+[` | Volver al modo Normal |
|---|
Hábito crítico: Desarrolla el reflejo de presionar `Esc` inmediatamente después de terminar una inserción de texto. Permanecer en modo Insertar cuando pretendes navegar es la fuente de la mayoría de las ediciones accidentales.
Guardar, salir y gestión de archivos
Estos comandos se ejecutan desde el modo Línea de comandos (presiona `:` primero):
| Comando | Acción |
|---|
| — | — |
|---|
| `:w` | Guardar (escribir) el archivo actual |
|---|
| `:w filename.txt` | Guardar con un nuevo nombre de archivo |
|---|
| `:q` | Salir (solo si no hay cambios sin guardar) |
|---|
| `:q!` | Forzar salida, descartando todos los cambios sin guardar |
|---|
| `:wq` o `:x` | Guardar y salir |
|---|
| `ZZ` | Guardar y salir (atajo en modo Normal) |
|---|
| `ZQ` | Salir sin guardar (atajo en modo Normal) |
|---|
| `:w !sudo tee %` | Guardar un archivo que abriste sin privilegios sudo |
|---|
El truco `:w !sudo tee %` es conocimiento esencial para los administradores de servidores. Cuando abres un archivo del sistema como `/etc/fstab` sin sudo y realizas cambios, no puedes guardar con `:w`. Este comando canaliza el contenido del buffer a través de `sudo tee` para escribir el archivo con privilegios elevados — sin necesidad de cerrar y volver a abrir Vim.
Operaciones de edición: eliminar, copiar, pegar y deshacer
El modelo de edición de Vim está construido sobre operadores + movimientos. Un operador (como `d` para eliminar o `y` para copiar) combinado con un movimiento (como `w` para palabra o `$` para el final de la línea) crea una acción de edición precisa.
Comandos de edición principales
| Comando | Acción |
|---|
| — | — |
|---|
| `x` | Eliminar el carácter bajo el cursor |
|---|
| `X` | Eliminar el carácter antes del cursor |
|---|
| `dd` | Eliminar (cortar) la línea actual completa |
|---|
| `D` | Eliminar desde el cursor hasta el final de la línea |
|---|
| `dw` | Eliminar desde el cursor hasta el final de la palabra |
|---|
| `d$` | Eliminar desde el cursor hasta el final de la línea |
|---|
| `d0` | Eliminar desde el cursor hasta el inicio de la línea |
|---|
| `yy` o `Y` | Copiar (yank) la línea actual completa |
|---|
| `yw` | Copiar desde el cursor hasta el final de la palabra |
|---|
| `p` | Pegar después del cursor (o debajo de la línea actual para copias de línea completa) |
|---|
| `P` | Pegar antes del cursor (o encima de la línea actual) |
|---|
| `u` | Deshacer el último cambio |
|---|
| `Ctrl+r` | Rehacer el último cambio deshecho |
|---|
| `.` | Repetir el último cambio (uno de los comandos más potentes de Vim) |
|---|
| `~` | Alternar mayúsculas/minúsculas del carácter bajo el cursor |
|---|
| `>>` | Indentar la línea actual un nivel |
|---|
| `<<` | Desindentar la línea actual un nivel |
|---|
El comando `.` (punto) es posiblemente la función de Vim más infrautilizada entre los principiantes. Repite tu última acción compuesta — si eliminaste una palabra con `dw`, presionar `.` elimina la siguiente palabra. Si cambiaste una palabra con `cw` y escribiste un reemplazo, `.` aplica el mismo reemplazo a la siguiente ocurrencia. Esto elimina las ediciones manuales repetitivas en archivos grandes.
Modo Visual: selección precisa de texto
El modo Visual proporciona tres granularidades de selección:
- `v` — Selección visual por caracteres
- `V` — Selección visual por líneas (selecciona líneas completas)
- `Ctrl+v` — Selección visual por bloques (edición de columnas)
Después de hacer una selección, aplica operadores:
| Tecla | Acción sobre la selección |
|---|
| — | — |
|---|
| `d` | Eliminar el texto seleccionado |
|---|
| `y` | Copiar (yank) el texto seleccionado |
|---|
| `c` | Cambiar (eliminar y entrar en modo Insertar) |
|---|
| `>` | Indentar la selección |
|---|
| `<` | Desindentar la selección |
|---|
| `~` | Alternar mayúsculas/minúsculas de la selección |
|---|
| `:` | Entrar en modo Línea de comandos con el rango prerelleno |
|---|
Caso de uso real del modo Visual de bloque (`Ctrl+v`): Tienes un archivo de configuración donde necesitas comentar 15 líneas consecutivas anteponiendo `#`. Selecciona la primera columna de esas líneas con `Ctrl+v`, navega hacia abajo con `j`, presiona `I` (i mayúscula), escribe `#`, luego presiona `Esc`. Vim aplica la inserción a cada línea seleccionada simultáneamente. Esta es una tarea que requeriría una expresión regular o repetición manual en la mayoría de los otros editores.
Búsqueda y reemplazo
Búsqueda
“`
/pattern Search forward for pattern (regex supported)
?pattern Search backward for pattern
n Jump to next match
N Jump to previous match
- Search forward for word under cursor
Search backward for word under cursor
:noh Clear search highlighting
“`
Sintaxis de búsqueda y reemplazo
“`
:%s/old/new/g Replace all occurrences in entire file
:%s/old/new/gc Replace all with confirmation prompt for each
:%s/old/new/gi Case-insensitive replace across entire file
:10,20s/old/new/g Replace only within lines 10 through 20
:'<,'>s/old/new/g Replace within visually selected range
:%s/bwordb/new/g Replace whole word only (word boundary anchors)
“`
Soporte de expresiones regulares: Vim usa su propio dialecto de expresiones regulares. El límite de palabra `b`, `d` para dígitos, `s` para espacios en blanco y `+` (uno o más) están disponibles. Para la sintaxis de expresiones regulares extendidas, usa el prefijo `v`: `:%s/v(foo|bar)/baz/g` coincide con “foo” o “bar” y los reemplaza con “baz”.
Trabajar con múltiples archivos, buffers y ventanas divididas
Aquí es donde el poder de Vim se hace más evidente para sesiones de edición complejas.
Buffers
Un buffer es una representación en memoria de un archivo. Vim puede mantener muchos buffers abiertos simultáneamente.
“`
:e filename Open a file into a new buffer
:ls or :buffers List all open buffers
:b2 Switch to buffer number 2
:bnext or :bn Switch to next buffer
:bprev or :bp Switch to previous buffer
:bd Delete (close) current buffer
“`
Ventanas divididas
“`
:split filename Horizontal split, open file in upper pane
:vsplit filename Vertical split, open file in right pane
Ctrl+w h/j/k/l Navigate between split panes
Ctrl+w = Equalize split pane sizes
Ctrl+w q Close current pane
“`
Pestañas
“`
:tabnew filename Open file in a new tab
:tabnext or gt Switch to next tab
:tabprev or gT Switch to previous tab
:tabclose Close current tab
“`
Escenario práctico: Al editar la configuración de un servidor web en un VPS con cPanel, es posible que necesites hacer referencia cruzada al `nginx.conf` principal mientras editas un archivo de host virtual. Abre ambos en una división vertical con `:vsplit /etc/nginx/nginx.conf` y navega entre paneles con `Ctrl+w l` y `Ctrl+w h` — sin necesidad de cerrar un archivo para consultar el otro.
Configuración de Vim con .vimrc
El archivo `.vimrc` en tu directorio de inicio es la configuración persistente de Vim. Se ejecuta como Vimscript cada vez que Vim se inicia.
“`bash
vim ~/.vimrc
“`
Configuración recomendada para servidores de producción
“`vim
" Display settings
set number " Show absolute line numbers
set relativenumber " Show relative line numbers (great for jump commands)
set cursorline " Highlight the current line
set scrolloff=8 " Keep 8 lines visible above/below cursor when scrolling
" Indentation
set autoindent " Copy indent from current line on new line
set smartindent " Context-aware indentation for code
set expandtab " Convert tabs to spaces
set tabstop=4 " Tab width = 4 spaces
set shiftwidth=4 " Indentation width for >> and <<
" Search behavior
set hlsearch " Highlight all search matches
set incsearch " Show matches as you type
set ignorecase " Case-insensitive search
set smartcase " Override ignorecase if search contains uppercase
" Usability
set mouse=a " Enable mouse in all modes
syntax on " Enable syntax highlighting
set encoding=utf-8 " Default encoding
set clipboard=unnamedplus " Use system clipboard for yank/paste
set undofile " Persist undo history across sessions
set undodir=~/.vim/undo " Directory for persistent undo files
" Visual
set showmatch " Briefly jump to matching bracket
set laststatus=2 " Always show status line
set wildmenu " Enhanced command-line completion
“`
Importante: La directiva `set undofile` crea un historial de deshacer persistente almacenado en disco. Esto significa que puedes cerrar un archivo, volver a abrirlo días después y aún deshacer los cambios de la sesión anterior. Crea el directorio de deshacer antes de habilitar esto:
“`bash
mkdir -p ~/.vim/undo
“`
Esto es especialmente valioso cuando se realizan cambios incrementales en archivos de configuración en sistemas de producción — por ejemplo, al ajustar la configuración de PHP-FPM o modificar los parámetros SSL en un servidor que ejecuta Certificados SSL para múltiples dominios.
Macros: automatización de ediciones repetitivas
Las macros son una de las funciones más potentes y menos utilizadas de Vim. Una macro graba una secuencia de pulsaciones de teclas y las reproduce.
“`
qa Start recording macro into register 'a'
[actions] Perform any sequence of Normal/Insert mode commands
q Stop recording
@a Replay macro stored in register 'a'
@@ Replay the last executed macro
10@a Replay macro 'a' ten times
“`
Ejemplo del mundo real: Tienes un archivo CSV con 200 líneas y necesitas envolver el segundo campo de cada línea entre comillas dobles. Graba la macro en la primera línea, reprodúcela 199 veces con `199@a`, y la transformación estará completa en menos de un segundo. No se requiere scripting.
Marcas y saltos
Las marcas te permiten marcar posiciones dentro de un archivo y volver a ellas instantáneamente.
“`
ma Set mark 'a' at current cursor position
'a Jump to the line of mark 'a'
`a Jump to the exact position of mark 'a'
'' Jump back to position before last jump
Ctrl+o Jump to previous position in jump list
Ctrl+i Jump to next position in jump list
:marks List all current marks
“`
Vim vs. Nano vs. Emacs: elegir el editor de terminal adecuado
| Característica | Vim | Nano | Emacs |
|---|
| — | — | — | — |
|---|
| **Curva de aprendizaje** | Pronunciada (sistema modal) | Mínima | Muy pronunciada |
|---|
| **Tiempo de inicio** | Casi instantáneo | Casi instantáneo | Más lento |
|---|
| **Uso de memoria** | Muy bajo | Muy bajo | Moderado a alto |
|---|
| **Resaltado de sintaxis** | Completo | Básico | Completo |
|---|
| **Ecosistema de plugins** | Extenso | Mínimo | Extenso |
|---|
| **Soporte de macros** | Nativo, potente | Ninguno | Nativo |
|---|
| **Ventanas divididas** | Sí | No | Sí |
|---|
| **Edición remota** | Vía SSH de forma nativa | Vía SSH de forma nativa | Protocolo TRAMP |
|---|
| **Complejidad de configuración** | Moderada (.vimrc) | Mínima | Alta (Elisp) |
|---|
| **Ideal para** | Usuarios avanzados, administradores de sistemas | Ediciones rápidas, principiantes | Desarrolladores, usuarios de Lisp |
|---|
Para tareas de administración de servidores — editar archivos de configuración, escribir scripts de shell, revisar registros — Vim proporciona el mejor equilibrio entre potencia, disponibilidad y velocidad. Nano es aceptable para ediciones puntuales cuando no puedes permitirte la carga cognitiva. Emacs es una opción legítima para desarrolladores que viven en el terminal, pero su huella de recursos y tiempo de inicio lo hacen menos práctico en entornos de servidor con recursos limitados.
Errores comunes y cómo evitarlos
1. Editar archivos de producción sin una copia de seguridad
Crea siempre una copia de seguridad antes de editar archivos críticos del sistema:
“`bash
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
sudo vim /etc/nginx/nginx.conf
“`
2. Olvidar usar sudo
Si abres un archivo con privilegios sin sudo y realizas cambios, usa `:w !sudo tee %` para guardar sin perder tus ediciones.
3. Confundir registros
Cuando eliminas texto con `dd`, va al registro predeterminado `"`. Si luego copias algo con `yy`, el texto eliminado se sobrescribe. Para preservar una copia antes de eliminar, usa registros con nombre: `"ayy` copia en el registro `a`, y `"ap` pega desde él.
4. Dejar archivos de intercambio en sistemas compartidos
Los archivos de intercambio de Vim en `/tmp` o en el directorio de trabajo pueden confundir a otros usuarios o procesos automatizados. Configura un directorio de intercambio dedicado en `.vimrc`:
“`vim
set directory=~/.vim/swap//
“`
La doble barra diagonal al final hace que Vim codifique la ruta completa del archivo en el nombre del archivo de intercambio, evitando colisiones.
5. Problemas de fin de línea en archivos multiplataforma
Si editas un archivo que se originó en Windows, puede tener terminaciones de línea CRLF (`rn`). Vim mostrará `^M` al final de cada línea. Corrígelo con:
“`bash
:%s/r//g
“`
Lista de verificación de puntos clave prácticos
Úsala como matriz de decisión de referencia rápida antes y durante las sesiones de Vim:
- Antes de editar cualquier archivo de producción: Crea una copia de seguridad con marca de tiempo con `cp file file.$(date +%Y%m%d%H%M%S).bak`
- Conciencia del modo: Si las pulsaciones de teclas no insertan texto, presiona `Esc` y confirma tu modo
- Hábito de guardado rápido: Presiona `Esc` luego `:w` después de cada cambio significativo — no esperes hasta el final
- Usa `:set number` temporalmente si necesitas navegar a una línea específica y no la tienes en `.vimrc`
- Para búsqueda/reemplazo global: Prueba siempre con `:%s/old/new/gc` (con confirmación) antes de ejecutar `:%s/old/new/g` a ciegas
- Aviso de archivo de intercambio al abrir: Elige siempre `(R)ecover`, guarda el contenido, luego elimina el archivo de intercambio
- Para ediciones de columnas: Usa el modo Visual de bloque `Ctrl+v` en lugar de repetición manual
- Deshacer persistente: Configura `set undofile` en `.vimrc` en cualquier servidor que administres regularmente
- Integración con el portapapeles: Si `p` pega contenido inesperado, verifica que `set clipboard=unnamedplus` esté configurado y que `xclip` o `xsel` esté instalado
- En caso de duda: `:help keyword` abre la documentación integrada para cualquier comando u opción
Ya sea que estés administrando archivos de configuración en entornos de Alojamiento Web Compartido o manteniendo infraestructura compleja en Servidores Dedicados, la eficiencia de Vim se acumula con el tiempo — cada comando que internalizas elimina fricción de tu flujo de trabajo de forma permanente.
Preguntas frecuentes
P: ¿Cuál es la diferencia entre Vi y Vim en Ubuntu?
`vi` en los sistemas Ubuntu modernos es típicamente un enlace simbólico a `vim` en un modo de compatibilidad reducida, o a `vim-tiny`. El Vi verdadero es el editor original de 1976 sin resaltado de sintaxis, sin deshacer multinivel y sin soporte de plugins. Vim añade más de 100 características sobre Vi manteniendo total compatibilidad con los atajos de teclado de Vi.
P: ¿Cómo salgo de Vim si estoy completamente bloqueado?
Presiona `Esc` varias veces para asegurarte de estar en modo Normal, luego escribe `:q!` y presiona Enter. Esto fuerza la salida sin guardar. Si incluso eso falla (raro, pero posible en estados de comandos recursivos), presiona `Ctrl+c` primero, luego `:q!`.
P: ¿Puede Vim editar archivos a través de SSH sin copiarlos localmente?
Sí. Usa `vim scp://user@hostname//path/to/file` para editar archivos remotos directamente a través de SCP. Vim gestiona la transferencia de forma transparente. Alternativamente, usa `rsync` para obtener el archivo, editarlo localmente y enviarlo de vuelta — esto es más rápido para archivos grandes.
P: ¿Cómo habilito el resaltado de sintaxis para un tipo de archivo específico que Vim no reconoce?
Ejecuta `:set filetype=nginx` (o `python`, `yaml`, `bash`, etc.) para asignar manualmente un tipo de archivo para la sesión actual. Para hacerlo permanente para una extensión de archivo específica, añade `autocmd BufRead,BufNewFile *.conf set filetype=nginx` a tu `.vimrc`.
P: ¿Es Neovim una mejor opción que Vim para uso en servidores?
Para tareas de administración de servidores puras, el Vim estándar es suficiente y está más universalmente disponible. Neovim ofrece configuración basada en Lua, mejor soporte de plugins asíncronos y un cliente LSP integrado — ventajas que importan principalmente para flujos de trabajo de desarrollo. En servidores de producción donde solo instalas lo necesario, Vim sigue siendo la opción pragmática.
