Introducción a Vim

Hoy tenía previsto escribir un artículo acerca de cómo, usando python y las librerías gráficas Tkinter, hacer un pequeño programita a modo de “Hola mundo”. Pero… ¿a quién le interesa eso? ¿A quién le puede resultar eso de utilidad? ¿Hay alguien aquí que necesite aprender eso? Como hace poco mencionó Julia que quería aprender Vim, he decidido hoy escribir un pequeño artículo de introducción a Vim.

Le pregunté a Julia qué nivel de Vim tenía pero no me respondió, así que voy a presuponer que no tiene ni idea y vamos a empezar por el principio. Así este artículo podrá resultar de utilidad a todas las personas interesadas en aprender a usar Vim.

¿Qué es Vim?

Vim es un potente y funcional editor de texto proveniente de los albores del mundo Linux. Vim proviene de Vi, otro editor de texto.

Diferencias entre Vi y Vim

La verdad es que ignoro cuáles son las diferencias entre uno y otro. Vim se denomina así debido a la notación “Vi IMproved” (Vi mejorado), y de ahí que se llame Vim. Pero más allá de eso, ignoro cuáles son las diferencias entre ambos y dejo la investigación como tarea a quien pueda tener interés.

He usado Vi a menudo, especialmente en tiempos en los que accedía a algún ordenador en red a través de una sesión SSH y tenía que editar textos. También he usado mucho Vim a lo largo de los años y lo sigo haciendo hoy en día. Siendo un usuario medio de Vim, nunca he echado a faltar en Vi nada de Vim, así que, ignoro cuáles son las diferencias aunque intuyo que va por el tema de macros, plugins y funciones avanzadas.

Neovim

Hace unos años, me encontré incluso con una nueva evolución de Vim todavía más avanzada llamada Neovim. Una vez más, ignoro qué tiene de “neo” sobre el Vim original. Normalmente me limito a usar Vim como usuario medio para editar ficheros rápidamente.

Vim vs. Emacs: The editor wars

En la historia de Linux, han sido recurrentes las llamadas “editor wars” o “guerras de editores”, las discusiones incluso acaloradas acerca de qué editor de texto es mejor, sin preguntarse cosas como: ¿Mejor para quién? ¿Para qué? ¿En qué momento? ¿En qué circunstancias? ¿Con qué finalidad? O simplemente: mejor… ¿cómo, específicamente?

Probé Emacs hace muchos años. Hace un mes lo probé de nuevo. Para mí carece de utilidad: en mi ordenador tardaba unos quince segundos en arrancar. Eso es demasiado para mí para editar un fichero rápidamente. Emacs y Vim son filosofías diferentes. Acerca del primero, se suele bromear con que es más un sistema operativo que un editor de texto.

¿Por qué aprecio Vim?

Vim es para mí un editor muy útil por los siguientes beneficios:

  • Está por todas partes: prácticamente cada distribución de Linux lo trae instalado por defecto.
  • Carga rápidamente: es cuestión de un segundo.
  • Es ágil: editar con Vim, una vez se conocen los fundamentos, es fácil, rápido y cómodo.

Aprendiendo Vim

Una vez sentadas las razones de utilidad y culturales, casi que religiosas en el contexto linuxero, acerca de por qué aprender Vim, vamos con ello.

Instalar Vim

Instalar Vim depende, como con cualquier otro programa, del sistema operativo de nuestro ordenador. En Linux, seguramente ya estará instalado. Para Windows y Mac, habrá que recurrir a algún instalador.

Dejo aquí un enlace a la página de descarga de Vim, la cual contiene instrucciones de descarga e instalación para diferentes sistemas operativos, incluidos Amiga y OS/2. Wow! Como digo, Vim está por todas partes.

Mencionar que, en Windows y Mac, hay versiones tanto de consola (terminal) como con interfaz gráfico.

Supongo que podréis instalar Vim en vuestro sistema operativo, así que me salto los detalles de esta parte.

Abrir y cerrar Vim

Puede resultar sorprendente que comience con un apartado acerca de cómo abrir y cerrar Vim. Abrirlo es fácil pero, cerrarlo… Ahí es donde empezamos a darnos cuenta de las particularidades de Vim.

Supondré que abrís Vim desde el terminal, que es desde donde se le puede sacar el máximo partido y donde, verdaderamente, Vim tiene sentido.

Abrimos Vim ejecutando:

vim

Esto abre Vim en una pantalla por defecto que muestra algunas informaciones, siendo la más importante de ellas cómo salir de él.

Recuerdo las primeras veces en que usé Vim. Simplemente, no es intuitivo cómo funciona. Esto es debido a su particular manera de hacerlo. Pero más acerca de eso en unas líneas. De momento, vamos a salir:

:q

Esto nos devuelve al terminal.

Los dos modos de Vim

Vim es particularmente especial porque cuenta con dos modos de funcionamiento:

  • Modo comando
  • Modo inserción

El modo comando es el modo por defecto. Mientras Vim está en este modo, acepta comandos. Comandos pueden ser cosas como pulsaciones de teclas que desplazan el cursor, borran letras, palabras, líneas… o pueden ser comandos que se escriben y que hacen cosas como mostrar los números de línea o hacer sustituciones de expresiones. De hecho, cuando escribimos “:q”, estamos insertando el comando “quit” (quítame el vim de delante que ya he terminado de editar).

El modo inserción es el modo en el que, por fin, insertamos texto en el fichero.

Para acceder al modo inserción, pulsamos la tecla “i”. Esto pone a Vim en modo inserción, y lo reconocemos porque, en la parte inferior izquierda de la pantalla, aparecen los caracteres:

— INSERT —

Para salir del modo inserción, pulsamos ESC. Esto nos devuelve al modo comando, desde el que podemos salir de nuevo con “:q”.

Crear un fichero con Vim

Por último, para terminar esta extenuante introducción a Vim, vamos a ver cómo crear un fichero. Sencillo:

vim hola_mundo.txt

Esto crea un fichero llamado “hola_mundo.txt” y comienza su edición.

Si hemos escrito algo, para salir del mismo, dado que hemos modificado su contenido, tenemos dos opciones:

Salir descartando los cambios

:q!

Algo así como “Quita quita! Descarta estos cambios!”.

Salir guardando los cambios

:x

Algo así como “Exit, pero guardando”. Así lo recuerdo yo.

Por último, y para completar este apartado antes de terminar, mencionar que podemos guardar el fichero en cualquier momento mediante el siguiente comando:

:w

“Write” (escríbeme los cambios en el disco duro). Ya digo, esta es mi regla mnemotécnica, pero puedes hacerte una que te funcione a ti.

Sabiendo esto, mencionar que se puede guardar y salir también así:

:wq

que, literalmente según Vim, escribe y quita.

Despedida y cierre

Hasta aquí esta introducción a Vim. ¿Os ha gustado?

¿Sigo? ¿Lo dejo?

¿Os ha resultado de utilidad? ¿Os interesa algo así? Si no, ¿qué os interesa?

El Friendensengel, ángel de la paz, entre las ramas de los árboles otoñales.

Comentarios

10 respuestas a «Introducción a Vim»

  1. Avatar de Julia
    Julia

    Muchas gracias por esta introducción, Javier.
    Añadiría que las primeras veces que usas vim y no sabes salir se suele acabar cerrando la ventana de la consola a lo bruto 😀

    A mi lo que me gustaría dominar de vim son los atajos de teclado para moverse por el texto, saltar a la siguiente palabra, línea etc sin tener que darle las flechas de uno en uno. También editar varios ficheros en paralelo. He visto a colegas trabajar así y me parece súper ágil. Creo que el secreto está en la práctica para conseguir esa “memoria táctil” y que los dedos vayan solos.

    He probado la página que enlazaste cuando hablamos de ello la otra vez pero lo dicho, tengo que dedicarle más tiempo. Ahora mismo el editor que más uso es pycharm para escribir Python y vim solo lo uso para editar los mensajes de commit en git o para tareas sueltas, con lo que no práctico lo suficiente. 🙁
    Pero este tutorial es desde luego un aliciente. Gracias!

    1. Avatar de Javier

      Sí, lo iba a poner, pero yo solía buscar el proceso en particular y hacerle un kill. Me parecía demasiado rebuscado como para compartirlo X)

      Ok, gracias por el feedback. Sabiendo lo que necesitas puedo escribir un artículo más enfocado a eso.

      También te voy a proponer en la misma columna un compromiso intermedio que te puede servir para practicar los atajos de teclado de vim. Por cierto, yo también lo usaba para editar los mensajes de commit en git.

      Fenomenal. Un placer 🙂

  2. Avatar de Dani
    Dani

    Gracias Javier.

    Parece interesante, no sabía que este editor existía.

    A simple vista, no sé qué me puede aportar. Parece que es una mezcla entre LTX y un editor normal (con normal me refiero a word, etc…) o me estoy liando?? Puede serme útil para crear apuntes?? Qué ventajas tiene con respecto a LTX??

    Hoy he visto un curso de aprender python y me ha tentado, pero es que no me da para abarcar mas!!!!! XD

    1. Avatar de Javier

      Te estás liando, Dani. Es un editor de texto. Yo lo equipararía, de entrada y que me perdonen los pros de Vim, con el Notepad de Windows. Escribes texto y lo guardas. Es sólo que se lanza desde el terminal, donde mucha gente pasa su día a día, se abre en un momento, edita los ficheros muy ágilmente y se sale. Además tiene la ventaja de que viene preinstalado en la inmensa mayoría de sistemas Linux, por lo que es lo que se suele encontrar al entrar en uno.

      En LTX usas un editor de texto para escribir un texto que tiene un formato específico que el intérprete de LaTeX sabe procesar. Pero el latex lo puedes escribir desde cualquier editor de texto, también desde el notepad (o el Write) de Mac. Luego tendrías que pasar el texto por el procesador de latex, que genera un dvi (device independent document) y de ahí generar el pdflatex. La ventaja de TeXworks es que no es sólo un editor de texto, sino más bien un IDE, un entorno de desarrollo. Escribes el texto, le das al botón y se encarga de todo lo demás. Las demás partes del proceso, además de la escritura en sí, son tenidas en cuenta por el IDE y llevadas a cabo.

      Jajaja, podemos ponernos con python en el futuro. Estaría fenomenal. Creo que Arduino acepta python, y de ahí a la domótica va la cosa sola 😉

      1. Avatar de Dani
        Dani

        Vale vale. Dejo entonces el Vim pasar de largo… aunque es curioso que en Mac no hay editor tipo Notepad de serie, al principio lo echaba de menos porque apuntaba muchas cosas en txt. Después me hice un atajo en iOS con la app de serie, y ya me permite guardar cosas en txt.

        Estaría bien lo de Python, pero me da la sensación de que me quedaría en el camino a lo poco de empezar! esta mente mía ya no es lo que era jajaja…

        En un curso programé Arduino, creo que era en C. hice hasta una aplicación real para el control del agua caliente con caldera y placas solares que estuvo funcionando unos años (acabaron quemándose las electroválvulas, que eran de los chinos… .jajajajaja)…

        1. Avatar de Javier

          Sí, no sé si Vim te puede interesar. Me pregunto si viene instalado en Mac…
          Creo que la app de serie en el Mac es el Write, que sería equivalente al Wordpad en Windows. Y es curioso que el Notepad es muy querido por mucha gente.

          Python es muy fácil, mucho más fácil que, por ejemplo, C. Y la mente… pues es cuestión de ponerla en marcha y practicar. Si has podido con LaTeX, vas sobrao.

          Hasta donde yo sé (HDYS), Arduino acepta C y también python. Pasote de proyecto el que comentas! ¿Te interesaría un curso de Arduino?

  3. Avatar de Dani
    Dani

    Ahora mismo Arduino me queda lejos… en el trabajo estoy dedicado a otros ámbitos 🙂

      1. Avatar de Dani
        Dani

        Estoy me da para un audio! te lo enviaré! 🙂

        (en GTD, utilizando la terminología, esto sería “Capturado”, para en la revisión diaria “Aclararlo” y en este caso sería un proyecto autosugestionado, que llevaría su primera siguiente acción a mi lista “iPhone”.

        1. Avatar de Javier

          Ah, fenomenal. Gracias. A la espera quedo 🙂

          Caray, ¡qué complicado! ¡Eres todo un profesional del GTD!

Deja una respuesta