Pero un solo modo normal no es suficiente para trabajar de manera eficiente. Para cambiar al modo de inserción insert, hay más de 6 formas diferentes. Por ejemplo, escribir el comando i permite comenzar a escribir directamente en la posición del cursor, mientras que shift + a mueve el cursor al final de la línea (lo cual es necesario con bastante frecuencia). Por otro lado, cc borra la línea en la que se encuentra el cursor y entra en el modo de inserción.
Para salir del modo de inserción y volver al modo normal, simplemente presiona ESC.
Además de estos dos modos, Vim tiene el modo visual, que es similar al modo normal pero se usa exclusivamente para seleccionar texto. También hay otro modo de interactuar con el editor después de ingresar el carácter : en el modo normal. El cursor se mueve hacia abajo en la pantalla, donde se pueden ingresar varios comandos. Por ejemplo, para salir de Vim, se debe ingresar q y presionar Enter. Por lo general, los comandos ingresados de esta manera se denotan como :help. Es decir, debes ingresar : seguido de la palabra help y luego presionar Enter.
Cuando se trabaja correctamente en Vim, el modo de inserción solo se usa para escribir texto (o borrar mientras se escribe). Las modificaciones y los movimientos se realizan, en la gran mayoría de los casos, en el modo de comandos.
La potencia del modo normal se puede apreciar por el hecho de que casi todos los editores populares tienen un complemento que emula el comportamiento de Vim, y generalmente es el complemento más popular con una gran ventaja sobre los demás. Por ejemplo, el complemento para VS Code se ha instalado más de un millón de veces.
Otro ejemplo interesante y, para muchos, sorprendente de la popularidad de este modo es el software que nos rodea. Gmail admite la navegación de estilo Vim directamente en su interfaz web, al igual que GitHub (intenta presionar el signo de interrogación en la página de cualquier repositorio). Cada navegador tiene un complemento popular que permite navegar por las páginas cargadas al estilo de Vim. Todos los paginadores, como less o more, también utilizan la navegación portada de Vim. Por lo tanto, todos los programas que utilizan paginadores, como git log (y otros comandos de git). Incluso en bash, simplemente ingresa set -o vi y la línea de comandos se convierte en vi (sin la m). Por cierto, de forma predeterminada, bash tiene el modo emacs habilitado con las teclas de acceso directo de ese editor.
La existencia de modos es una razón clave, pero no la única. Otra razón igualmente importante son los búferes. En los editores normales, hay una clara distinción entre pestañas con archivos y otros paneles, como el árbol de archivos, la terminal incorporada, la ventana de errores, la ventana de configuración, la ventana de depuración, etc. Todas estas entidades tienen sus propias reglas de funcionamiento y visualización, su propio conjunto de teclas de acceso directo y su propio método de navegación (si es que se puede navegar dentro de ellos).
En Vim, cualquier parte del editor abierta en su propio marco es simplemente un búfer de texto independiente, independientemente de cómo se use. Esto automáticamente significa que hay una forma única de interactuar con estos búferes. Por ejemplo, la búsqueda mencionada anteriormente / funciona perfectamente en cualquier parte del editor. Lo mismo ocurre con los movimientos hjkl. El contenido de dicho búfer se puede copiar con las herramientas estándar, ya sea en su totalidad o seleccionando parte de él. Se puede cerrar con un comando diseñado para cerrar búferes (nuevamente, independientemente de su estructura interna). Incluso se pueden abrir más búferes de los que caben en el área de trabajo. Algunos búferes pueden superponerse a otros sin problemas, lo que no impide cambiar entre ellos. Los búferes son tan convenientes que, a pesar de la existencia de pestañas, los usuarios de Vim rara vez las usan.
Otra ventaja repentina aparece debido a la naturaleza textual del propio editor. Puesto que se abre directamente en pestañas de terminal, y los terminales avanzados tienen una característica como ventanas split, la integración del terminal dentro de Vim no es realmente necesaria, y usando una combinación de pestañas de terminal y Vim se puede personalizar el flujo de trabajo muy convenientemente.