Vim y Emacs: sin novedad en el frente

Entre las guerras santas más legendarias de las que tenemos conciencia está la guerra de editores. Vi/Vim contra Emacs. Esta es particularmente divertida por que ambos son software libre y con capacidades muy altas.

Esto se remonta a muchos años atrás. Emacs fue desarrollado por Richard Stallman en los setenta, liberado aproximadamente 35 años atrás. Vi tiene más o menos la misma edad, creado por Bill Joy. Vim por el contrario, es algo más reciente y surge de la necesidad de Bram Moolenar de crear un clon de Vi para Amiga en 1991.

¡Qué retro! Editores de la edad de piedra, cuando la vida era más simple. Y los seguimos usando por que evolucionan y se adaptan a los tiempos. Vim e Emacs usan modernas interfaces en GTK, tienen sus propios lenguajes de extensión, gestores de paquetes; entre otras cosas que los ponen entre los editores modernos.

¿Para qué los uso?

Vamos a poner una circunstancia completamente hipotética. Un Gúgol es una palabra matemática que define a un uno seguido de cien ceros. ¿Cómo lo escribimos en un editor de texto?

La primera solución que se me ocurre es escribir un uno y presionar la tecla 0 hasta que el contador de columnas me ponga en 101, por que 101 caracteres debe medir esta expresión. Estamos suponiendo que editamos esto en un editor de texto competente, que disponga de una barra de estado para mostrar estas cosas.

Ahora, se me ocurre una solución más simple:

i1 ESC 100a0 ESC

Por supuesto que esta solución requiere de Vim, o por lo menos de Vi. El comando es bastante simple, y es como si le dijéramos a Vim: Estando en el modo normal, inserta 1 y regresa al modo normal. Ahora inserta después del cursor cien veces 0 y regresa al modo normal. Vim cumplirá nuestra orden sin chistar.

Complejidad

Esta solución suena extremadamente compleja, y lo entiendo. En primera por que estamos tratando con el concepto de un editor modal. Pero hay casos en que es mucho más útil de lo que parece.

Digamos que tengamos una lista de compras. Vamos a ir a la tienda y queremos escribir lo que vamos a traer. Recordemos que es algo hipotético, nadie debería llevar su computadora a la tienda para ir por comida. Como sea, esta es nuestra lista:

1 Plátano
4 manzanas
2 kilos de azúcar
1 Litro de agua

Es una lista de compra muy sencilla. Pero le vamos a hace unos arreglos. Primero, creo que unos plátanos más no estarían mal. Como nos gusta la estética, cambiaremos la minúscula en manzanas para dejarla como Plátano y sustituiremos los nombres de las unidades por sus abreviaturas.

Así que empecemos. Como queremos un respaldo de nuestra lista original, hacemos una copia con 4yy y la pegamos más abajo con p. Presionamos un par de veces Ctrl-a para incrementar el número de plátanos y nos desplazamos al fin de la siguiente palabra con e. Bajamos a la segunda línea, hacemos un Fm para llegar a la palabra manzanas y presionamos ~ (AltGr-4 en mi teclado) para que la letra cambie a su versión mayúscula. Hacemos un j para bajar hasta la siguiente línea y aparecemos en la k de kilos con b. Salimos del modo normal tecleando cw y escribiendo la palabra de reemplazo para kilos, que va a ser kg. Presionamos ESC, regresando al modo normal y otra vez j para hacer lo mismo con Litro. Listo. Así se ve nuestra lista ahora.

3 Plátanos
4 Manzanas
2 kg de azúcar
1 L de agua

El poder

Resumamos la acción anterior en esto:

4yy G p 2Ctrl-A e Fm ~ j b cw kg ESC j b cw L ESC

He respetado algunos espacios para hacerlo comprensible, pero normalmente no se hace. Esta orden propia de un robot nos hace pensar mucho en su utilidad. Pero seguro que es más rápido hacer esto que moverte con el ratón, seleccionar, copiar, pegar, borrar y demás.

Los editores de tan larga trayectoria como Vim o Emacs pueden hacer cosas como estas por que han sido desarrollados por años y con ideas muy claras de como hacer las cosas.

Las curvas de aprendizaje

Sí, son empinadas. Pero para eso están iniciativas como Cream, que proporciona un entorno completamente listo para usar Vim desde el principio sin tener que pelearse con los modos y eso, y guru-mode, una extensión de Emacs que -hasta donde sé- ayuda a los principiantes.

El guru-mode es parte de Emacs Prelude, una colección de extensiónes qué te la ponen fácil si quires aprender.

Las extensiones

Ya que son editores más extendidos que muchos editores modernos y disponen de lenguajes de extensión propios, puedes encontrar temas de colores, plugins y demás. Cosas tan interesantes hay por ahí como:

Parece que es más fácil (o más placentero) programar extensiones en Emacs Lisp que en VimScript. Digo, es un lenguaje funcional interpretado por un núcleo hecho para eso, contra un lenguaje imperativo hecho para configurar y extender.

Conclusión

¡Dales una mirada! No te cuesta nada, ambos son software libre distribuido gratuitamente. Deben estar en los repositorios de todas las distribuciones conocidas por el ser humano e incluso pueden encontrar en maléficos sistemas privativos. No hay mucho más que pedir.

Y por último, si se extrañaron por que puse una e antes de Emacs en el título en vez de una y, es por que me suena mejor. Algo así como /í-macs/. Pude ahorrarme problemas ortográficos cambiando la posición, pero me gusta mucho Vim para hacerle eso 😀


27 comentarios, deja el tuyo

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Rots87 dijo

    yo solo ocupo el nano y solo para editar algunos ficheros 0.0

    1.    anti dijo

      Esto es más que nada una argumentación para usarlos. Veo que mucha gente prefiere ni probarlos, y me dispuse a escribir algo para que se animen. Eso es todo.

      (Ya sé que es un artículo flojito)

      1.    Damian Rivera dijo

        Para nada no es flojo, emacs y vim son grandes editores de texto,yo los prefiero(vim) en vez de un IDE

        Saludos

        1.    anti dijo

          Gracias. Ahora que lo pienso un poco, creo que por accidente dí una primicia. La ‘distribución’ que menciono parece que se acaba de dar a conocer hoy.

    2.    KZKG^Gaara dijo

      ahahaha me sucede igual, con nano ando sobrado 😀

  2.   eolandro dijo

    Pues hace poco necesite editar un archivo por telnet en un access-point con dd-wrt y tuve que recordar vi.

  3.   msx dijo

    1.» está la guerra de editores. »
    ERROR!
    Vim es un editor, Emacs es el colisionador de hadrones listo para usar en tu computadora, sabelo!.

    2. Usar Cream (ajjj) o cualquier tipo de «helper» para Vim o Emacs es lo mismo que instalar Manjaro y pretender que instalaste y usás Arch – con la posible salvedad que un helper no cambia la escencia de Vim o Emacs y Manjaro es Manjaro pero no es Arch.

    Si quieren rockearla en serio con Emacs hay algunos sitios interesantes:
    http://emacsrocks.com/
    http://www.masteringemacs.org/
    http://batsov.com/prelude/
    http://lisperati.com/casting.html

    1.    anti dijo

      Emacs es un intérprete de Lisp con caraterísticas añadidas para la edición de texto.
      Cream puede ser lo que quieras, pero está allí para que los que inicien no se estrellen directamente contra el muro de la edición modal.
      Emacs es algo más fácil al principio, por que sí es escribe a la primera

  4.   Annubis dijo

    [mode falmewar ON]

    Emacs, ese sistema operativo que 35 años después aún adolece de un buen editor de textos 😛

  5.   Xykyz dijo

    «Vim y Emacs». Esa «e» del titulo (y en alguna parte del texto) está mal usada…

    1.    Xykyz dijo

      Y por cierto, yo uso vim para todo ya. Empecé a usarlo el año pasado y ahora se ha vuelto indispensable para mí. Además tiene la ventaja de que en todas (o al menos casi todas) viene preinstalado vi, que es casi igual en el manejo, por lo que sabiendo usarlo puedes editar archivos en cualquier distribución, tenga X11 o no.

      Emacs lo he probado, pero me parecían combinaciones de teclado poco cómodas así que me centré en Vim

    2.    anti dijo

      Ya lo explicaba hasta abajo. Para mí que se debería usar e por que la frase suena como /vim e í-macs/, ateniéndonos a que la y cambia por e cuando la siguiente palabra empieza con el sonido de i.
      Cómo sea, era mucho más elegante ponerlo al revés y evitar problemas, pero un poco de experimentación no le hace daño a nadie.

      1.    Xykyz dijo

        Vale, no llegué a leer el artículo entero por falta de tiempo jaja.

        De todas formas, sigue siendo una falta ortográfica, por mucho que suene mejor.

        1.    anti dijo

          Esta bien. Nada más que esta raro eso de criticar sin terminarse la lectura.
          Espero que puedan excusarme esta falta. Parece que en la revisión la pasaron también, así que han de estar de acuerdo conmigo, pero habría que revisar alguna referencia de la RAE para las palabras extranjeras. Estas no son traducibles.

          1.    Xykyz dijo

            Sí, no lo terminé, admito el error, pero no tengo tiempo ultimamente y no puedo estar por aquí tanto como me gustaría. De hecho es sumamente extraño que al final haya podido estar un par de ratos por aquí hoy.

            En cuanto a lo de las palabras extranjeras, la conjunción ‘y’ no es una palabra extranjera por mucho que emacs sí. Según lo que tengo entendido (lo que tampoco tengo tiempo de corroborar ahora) emacs se debería leer emacs, por mucho que lo leamos en inglés. Sino sería difícil aplicar las reglas de la ortografía, pues si hablas castellano no tienes porqué hablar inglés o alemán, y por tanto no tienes porqué saber como se pronuncian esas palabras en esos idiomas.

            De todos modos no era una crítica solo un comentario y te digo desde ya que tus artículos siempre me gustan 😉

        2.    anti dijo

          Gracias. Los comentarios y la crítica constructiva nos sirven a todos.

  6.   diazepan dijo

    No me gusta usarlos pero, en un curso de Programación Funcional Avanzada, había que hacer un editor tipo Vim, pero en haskell.

  7.   Tyo100 dijo

    Yo prefiero vi o vim por ser el mas universal ya que en cualquier SO funciona igual y todos los *nix lo incluyen y por todos me refiero a todos desde GNU/Linux, HP-UX, Solaris, AIX, BSD hasta versiones recortadas de Linux como dd-wrt.

  8.   Abimael Martell dijo

    yo programo 100% con VIM (Ruby, PHP, Javascript, Coffescript, CSS, y mas)
    aquí esta una distribución para los programadores ruby, es muy completa y tiene muchas cosas útiles, saludos (https://github.com/carlhuda/janus)

    1.    Damian Rivera dijo

      Es lo que digo( arriba) yo uso vim para mono,java,perl,bash y python solo que los lenguajes no interpretados tenemos que hacer el uso de la terminal para compilar,en FreeBSD use(y uso) mucho VI que es el editor nativo pero también instale ee y joe muy bueno (parecidos a nano),en Gentoo lo bueno es que trae nano pero ya compile vim y ¡me gusta mucho! es el mejor editor que hay y modificado a las necesidades de uno es una perfecta herramienta para la administración del sistema

      Saludos

  9.   Matias (@W4t145) dijo

    Vim Vim Vim!, por siempre, sirve para todo y en cualquier lugar, no lo cambio jamas

  10.   nano dijo

    Ahm, no se, yo soy flojo y uso Sublime xD

  11.   Daniel Rojas dijo

    Yo uso siempre Vim, me encanta y me parece muy práctico y cómodo 😀

  12.   Dragnell dijo

    Simplemente vim, indispensable en mi día a día.

  13.   Guido Rolon dijo

    vim RULES ! pero «ed» ROCKS !!!!,

  14.   vim dijo

    Vim naranja escribe fino vim cristal escribe normal, vim, vim, vim…

  15.   yogurblanco dijo

    Deberías aprender las diferencias entre «porque», «por qué», «por que» y «porqué». Macho, en todo el texto no has dado ni una.