Vim e 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 :D


anti

anti: Distro-hopper rehabilitado. A parte de eso no tengo mucho que decir.


26 comentarios en “Vim e Emacs: sin novedad en el frente

Deja un comentario

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current day month ye@r *

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

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

    6
  3. 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

    7
    • 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

      8
  4. [mode falmewar ON]

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

    9
  5. “Vim y Emacs”. Esa “e” del titulo (y en alguna parte del texto) está mal usada…

    10
    • 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

      11
    • 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.

      12
      • 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.

        13
        • 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.

          14
          • 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 ;)

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

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

    17
  7. 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.

    18
  8. Google Chrome 24.0.1290.1GNU/Linux x64
    Abimael Martell

    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)

    19
    • 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

      20
  9. Ahm, no se, yo soy flojo y uso Sublime xD

    21
  10. Yo uso siempre Vim, me encanta y me parece muy práctico y cómodo :D

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

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

    24
  13. vim RULES ! pero “ed” ROCKS !!!!,

    25
  14. Vim naranja escribe fino vim cristal escribe normal, vim, vim, vim…

    26

Deja un comentario

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

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current day month ye@r *