Vim modes · 5 min read · Jan 21, 2026

Modos compatible y no compatible en Vim

Hasta ahora, en nuestros tutoriales centrados en Vim, hemos discutido la función Modeline del editor, así como cómo se puede expandir el conjunto de características de Vim utilizando plugins. Sin embargo, como todos sabemos, Vim ofrece una plétora de características integradas; así que llevando la discusión más allá, en este tutorial, discutiremos los modos disponibles en los que se puede iniciar el editor.

Pero antes de hacer eso, tenga en cuenta que todos los ejemplos, comandos e instrucciones mencionados en este tutorial han sido probados en Ubuntu 14.04, y la versión de Vim que hemos utilizado es 7.4.

Para entender correctamente los modos de Vim mencionados anteriormente, primero tendrás que comprender un aspecto importante del proceso de inicialización del editor.

vimrc del sistema y local

El aspecto en cuestión es: cuando se inicia Vim, el editor busca un archivo ‘vimrc’ a nivel de sistema para llevar a cabo inicializaciones predeterminadas a nivel de sistema.

Este archivo generalmente se encuentra en la ruta $VIM/vimrc en su sistema, pero si ese no es el caso, entonces puedes encontrar la ubicación exacta ejecutando el comando :version dentro de Vim. Por ejemplo, en mi caso, aquí está el extracto relevante de la salida que produjo el comando:

...
...
...
archivo vimrc del sistema: "$VIM/vimrc"  
archivo vimrc del usuario: "$HOME/.vimrc"  
2do archivo vimrc del usuario: "~/.vim/vimrc"  
archivo exrc del usuario: "$HOME/.exrc"  
valor de reserva para $VIM: "/usr/share/vim"  
...
...
...

Así que el archivo ‘vimrc’ del sistema se encuentra efectivamente en $VIM/vimrc , pero verifiqué que la variable de entorno $VIM no está configurada en mi máquina. Así que en ese caso - como puedes ver en la salida anterior - hay un valor de reserva para $VIM, que en mi caso es */usr/share/vim*. Cuando intenté buscar ‘vimrc’ en esta ruta, observé que el archivo está presente. Así que ese es mi vimrc del sistema, que - como mencioné anteriormente - se lee cuando se inicia Vim.

Después de que este vimrc del sistema es analizado, el editor busca un archivo ‘vimrc’ específico del usuario (o local). El orden de búsqueda para el vimrc local es: variable de entorno VIMINIT, $HOME/.vimrc, variable de entorno EXINIT, y un archivo llamado ‘exrc’. Generalmente, es el $HOME/.vimrc o ~/.vimrc el que existe y se trata como vimrc local.

¿De qué compatibilidad estamos hablando?

Como estamos discutiendo los modos compatible y no compatible de Vim, vale la pena saber qué tipo de compatibilidad habilitan y deshabilitan estos modos. Para esto, uno debe ser consciente de que Vim es una forma corta de V i IM mejorado, y como su nombre completo sugiere, el editor es una versión mejorada del editor Vi.

Por mejorado, lo que se quiere decir es que el conjunto de características que ofrece Vim es mayor que el de Vi. Para una mejor comprensión de la diferencia entre los dos editores, dirígete aquí.

Así que al discutir los modos compatible y no compatible de Vim, la compatibilidad de la que estamos hablando es la compatibilidad de Vim con Vi. Cuando se ejecuta en modo compatible, la mayoría de las mejoras y mejoras de Vim se desactivan. Sin embargo, ten en cuenta que en este modo, Vim no simplemente emula a Vi - el modo básicamente establece algunas opciones predeterminadas a la forma en que funciona el editor Vi.

El modo no compatible - no hace falta decirlo - hace que Vim funcione sin ser compatible con Vi, haciendo que todas sus mejoras/características estén disponibles para el usuario.

¿Cómo habilitar/deshabilitar estos modos?

Intenta ejecutar el comando :help compatible en Vim, y deberías ver la siguiente sintaxis:

'compatible' 'cp' boolean (predeterminado en, apagado cuando se encuentra un |vimrc| o |gvimrc|  
 archivo)

Así que la descripción dice que el modo compatible está ACTIVADO por defecto, pero se apaga cuando se encuentra un archivo vimrc. Pero, ¿de qué vimrc estamos hablando? La respuesta es el vimrc local. Profundiza en los detalles que ofrece el comando :help compatible y encontrarás la siguiente línea, que debería aclarar las cosas:

Efectivamente, esto significa que cuando existe un archivo |vimrc| o |gvimrc|, Vim utilizará los valores predeterminados de Vim, de lo contrario, utilizará los valores predeterminados de Vi. (*Nota: Esto no ocurre para el archivo vimrc o gvimrc a nivel de sistema, ni para un archivo dado con el argumento |-u|*).

Así que, lo que realmente sucede es que, cada vez que se inicia Vim, primero analiza el archivo vimrc del sistema - en este momento el modo compatible está ACTIVADO por defecto. Ahora, cada vez que se encuentra un vimrc del usuario (o local), el modo no compatible se activa. El comando :help compatible-default lo deja bastante claro:

Cuando Vim se inicia, la opción 'compatible' está activada. Esto se utilizará cuando Vim comience sus inicializaciones. Pero tan pronto como se encuentra un archivo vimrc del usuario, o un archivo vimrc en el directorio actual, o se establece la variable de entorno "VIMINIT", se configurará como 'nocompatible'.

En caso de que desees anular el comportamiento predeterminado y activar el modo no compatible cuando el editor comienza a analizar el archivo vimrc del sistema, esto se puede hacer agregando el siguiente comando a ese archivo al principio:

:set nocompatible

Otros detalles útiles

Aquí hay algunos detalles más útiles sobre estos modos:

Pero hay un efecto secundario de establecer o restablecer 'compatible' en el momento en que se encuentra un archivo .vimrc: Los mapeos se interpretan en el momento en que se encuentran. Esto hace una diferencia al usar cosas como "". Si los mapeos dependen de un cierto valor de 'compatible', configúralo o restablece antes de  
dar el mapeo.

El comportamiento anterior se puede anular de estas maneras:  
- Si se da el argumento de línea de comando "-N", se utilizará 'nocompatible', incluso cuando no exista un archivo vimrc.  
- Si se da el argumento de línea de comando "-C", se utilizará 'compatible', incluso cuando exista un archivo vimrc.  
- Si se utiliza el argumento "-u {vimrc}", se utilizará 'compatible'.  
- Cuando el nombre del ejecutable termina en "ex", entonces esto funciona como si se hubiera dado el argumento "-C": se utilizará 'compatible', incluso cuando exista un archivo vimrc. Esto se ha hecho para hacer que Vim se comporte como "ex", cuando se inicia como "ex".

Está de acuerdo, es probable que no te encuentres en una situación en la que tengas que activar el modo compatible con Vi de Vim, pero eso no significa que debas ignorar el proceso de inicialización del editor. Después de todo, nunca sabes cuándo este conocimiento podría ser de ayuda.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.