Least Significant Bit

All in all we’re just another bit in the word

Usando el editor EMACS

Posted by ferk en octubre 1, 2008

Un dia cualquiera en la vida de un usuario de Emacs

Un dia cualquiera en la vida de un usuario de Emacs

Llega un momento en la vida de todo programador en el que uno acaba cansandose de tener que usar un editor para cada lenguaje de programación y comienza a plantearse la búsqueda de un editor de verdad…. un editor que pueda usar en situaciones extremas, en cualquier sistema y con la suficiente potencia de un entorno de desarrollo completo sea cual sea el lenguaje.
Si bien es cierto que hay otras opciones posibles, aquí está la mia, y si algo de esto sirve para algo a alguien, estupendo.

El editor EMACS (siglas de Editor MACros) es “the extensible, customizable, self-documenting real-time display editor!“, lo que viene a ser un editor de texto con esteroides.

Emacs empezó a ser desarrollado por M. Richard Stallman a mediados de los años 70 y reescrito en el 84 como primer componente del sistema operativo GNU. Es dificil encontrar un editor más antiguo que este, y sin embargo no deja de ser uno de los más avanzados en cuanto a posibilidades de extensión y funcionalidad, y aún hoy se encuentra en constante evolución.
Está disponible para una enorme cantidad de sistemas operativos (muchos de los que ni siquiera he oido hablar) y funciona tanto en terminales en modo texto como en sistemas gráficos, tanto modo remoto como local.

Sin embargo la longevidad de Emacs se nota. Fue desarrollado en una época en la que los teclados eran muy distintos. No existía la tecla “Alt” tal como existe ahora. Los teclados de las Lisp machine para las que se diseñó Emacs solían tener la tecla “Control” justo al alcance del pulgar, y al lado existía una tecla llamada “Meta”. Hoy día “Control” está mucho más alejado, y la tecla que ocupa la posición del pulgar es “Alt”, que es la que en el Emacs actual ha venido a reemplazar a “Meta”.

Space scadet. El primer teclado diseñado para máquinas Lisp

Space scadet. El primer teclado diseñado para máquinas Lisp

Es por eso que, hoy en día, una de las cosas que más incomoda a quienes empiezan a usar Emacs es el uso intensivo de “Control” y las combinaciones de teclas tan diferentes de las usadas en Windows.

Estos son algunos atajos de teclado para algunos de los comandos copiar/pegar en Emacs, donde “C-letra” es una combinación de teclas pulsando “Control+letra” y “M-letra” equivaldría a pulsar “Meta-letra” o “Alt-letra”.

Atajo Descripción Comando
C-w Cortar(matar) la región de texto seleccionada kill-region
M-w Copiar el texto al anillo portapapeles (kill-ring) kill-ring-save
C-y Pegar el texto desde el portapapeles yank
M-y Alternar entre los diferentes textos contenidos en el anillo yank-pop

Leyendo eso de “matar” y “anillo” parecerá que me he equivocado de película. ¡Pero no!, el “portapapeles” de Emacs se podría comparar con una especie de anillo o collar en el que cada perla es una región de texto que ha sido copiada en algún momento desde que ejecutaste el editor.
Eso significa que por mucho que copies, pegues o trastees, siempre podrás usar “C-y” y sucesivos “M-y” para dar vueltas al collar y recuperar el texto que copiaste cuando empezaste a usar el editor.

“Matar” es simplemente el nombre de la operación que tiempo después plagiaría Windows dandole el nombre de “Cortar”.
Una forma muy cómoda y útil de copiar/cortar texto usando el teclado (evitando el uso de esos malditos roedores) es apretando alguna combinación de teclas como esta:

Atajo Descripción Comando
C-SUPRIMIR Cortar la palabra a la derecha del cursor kill-word
C-RETROCESO Cortar la palabra a la izquierda del cursor backward-kill-word
C-k Cortar todo el resto de la línea a la derecha del cursor kill-line

Lo bueno de usar estas teclas para cortar es que es mucho más rápido y preciso que usar el ratón. Puedes pulsarlas varias veces sucesivamente y cortar una región de texto completa sin necesidad de ir a buscar con la mano el ratón para seleccionarla a pulso y luego tener que pulsar de todas formas la combinación para cortarla.

Si no queremos que se borre el texto que se ha cortado, sino que sólo queremos copiarlo, podemos pegar el texto de nuevo tras haberlo cortado. El texto seguirá almacenado en el anillo sin importar la cantidad de veces que lo peguemos.

Como puede verse, todo en Emacs se basa en la ejecución de comandos asociados a combinaciones de teclas. Incluso en la inserción de texto cada letra se interpreta como un comando que inserta la letra en el texto que se está editando.

Pero en Emacs hay MUCHISIMOS comandos… no hay suficientes teclas para asignarlos a todos.
Es por eso que tenemos lo que se llama “atajos en cadena” que consisten en comandos para los que hay que pulsar en realidad dos combinaciones de teclas una despues de otra de forma consecutiva. Algunos ejemplos son…

Atajo Descripción
C-x C-c Cerrar Emacs
C-x C-f Abrir un fichero
C-x C-s Grabar el fichero actual
C-x C-w Grabar el fichero con otro nombre

Y algunos otros que servirán para trabajar al mismo tiempo con varios ficheros abiertos o búfferes:

Atajo Descripción Comando
C-x b Cambiar a otro buffer switch-to-buffer
C-x 2 Dividir la ventana en 2 bufferes, uno arriba y otro abajo split-window-vertically
C-x 1 Mostrar sólo el buffer actual delete-other-windows
C-x 0 Ocultar el buffer actual delete-window

La forma de cambiar a otro buffer usando “C-x b” puede parecer algo incómoda, ya que hay que escribir el nombre del buffer para poder acceder a él (aunque por defecto, con pulsar ENTER ya aparece el último buffer usado), y es aquí donde para empezar podemos meterle mano a la configuración de Emacs para hacerlo algo más cómodo…

* El archivo de configuración ~/.emacs

La configuración de Emacs está almacenada en un archivo de texto situado en el directorio de usuario, con el nombre de “.emacs”. De no existir el archivo no habría más que crearlo. Aquí se almacenan las configuraciones que se hayan podido grabar usando el menú “Options” de la interfaz gráfica de Emacs, pero para aprovechar realmente la potencia de este sistema de configuración es mucho mejor editar el archivo directamente a mano, usando el propio Emacs.

Lo primero que voy a mostrar es como activar un Modo llamado “interactive switch buffer” o “iswitchb” para los amigos, que facilita bastante trabajar con Emacs con varios bufferes o archivos abiertos.

Para activarlo hay que añadir al archivo .emacs lo siguiente:


;;============================================================
;; iswitchb mode
;;============================================================
(require 'iswitchb)
(iswitchb-mode)
;;============================================================
;; iswitchb ignores
;;============================================================
(add-to-list 'iswitchb-buffer-ignore "^ ")
(add-to-list 'iswitchb-buffer-ignore "*Messages*")
(add-to-list 'iswitchb-buffer-ignore "*ECB")
(add-to-list 'iswitchb-buffer-ignore "*Buffer")
(add-to-list 'iswitchb-buffer-ignore "*Completions")
(add-to-list 'iswitchb-buffer-ignore "*ftp ")
(add-to-list 'iswitchb-buffer-ignore "*bsh")
(add-to-list 'iswitchb-buffer-ignore "*jde-log")
(add-to-list 'iswitchb-buffer-ignore "^[tT][aA][gG][sS]$")

Las primeras dos líneas de parentesis sirven para cargar el módulo “iswitchb” y activar el iswitchb-mode. Las siguientes lineas lo que hacen es añadir a una “lista negra” algunos bufferes a los que no nos va a interesar acceder.

Una vez cargado este modo, cuando pulsemos “C-x b” nos aparecerá una lista de bufferes abiertos a los que se puede acceder. El buffer que aparece en primer lugar, resaltado en otro color, es el que se mostrará al pulsar Enter. Si queremos cambiar a otro buffer podemos empezar a escribir algunas letras del buffer para eliminar de la lista los bufferes que no contengan esas letras, o bien pulsar C-s o C-r que rotará el orden de los elementos de la lista.

Otra opción de configuración que puede ser útil es la de crear nuestros propios atajos de teclado.
Por ejemplo, para hacer que cuando pulsamos la tecla F12 se ejecute una terminal en un buffer de Emacs, se emplearía esta linea dentro del archivo .emacs:

(global-set-key (kbd "F12") 'eshell)

“global-set-key” indica que se tratará de un atajo global dentro de emacs, que funcionará sea cual sea el modo de trabajo en el que se esté, y ” ‘eshell ” es el comando para ejecutar la shell de Emacs.

Con un poco de maña incluso es posible llegar a crear tus propios comandos que hagan cualquier cosa a golpe de teclado en Emacs. Desde cargar determinados archivos automaticamente a iniciar el reproductor con una playlist de música diferente según el lenguaje del fichero que estés editando😛

3 comentarios to “Usando el editor EMACS”

  1. jayzeegp said

    Pedazo de entrada tío, enhorabuena. Está muy ameno de leer, a ver si más gente se convierte a la Iglesia de Emacs –> http://www.stallman.org/saint.html

  2. overdriveborja said

    Muy buen artículo🙂 enhorabuena… a ver si te pasas por #emacs-es de freenode donde estamos una comunidad bastante activa🙂

    Un saludo.

    Borja

  3. […] usando_el_editor_EMACS […]

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: