May 28 2008

Supervivencia en emacs

Tag: introadmin @ 3:08 am

Cambiar de editor o entorno requiere esfuerzo, mucho esfuerzo, ya que hemos estado acostumbrados a algún otro durante un largo periodo de tiempo.

Antes de ponerse a probar emacs, merece la pena conocer los keystrokes mas típicos, así como conocer algunos comandos que pueden ayudarnos en nuestro aprendizaje sin necesidad de leer un tutorial completo.

En primer lugar debemos saber como entrar y como salir de la aplicación; para entrar tan sólo debemos escribir en el shell: $ emacs

y esto lanzará la interfaz. Si estamos en las x, por defecto abrirá la aplicación con ventanas, si queremos que se ejecute sin ventanas en la terminal tan sólo deberíamos escribir: $ emacs -nw

Podemos modificar nuestro emacs a nuestro gusto incluyendo líneas en el fichero de configuración .emacs, sin embargo si queremos que se ignore dicha configuración y que se ejecute emacs por defecto ejecutariamos: $ emacs -q

Para salir de la aplicación tan sólo debemos pulsar la combinación de teclas: C-x-c

Cuando lanzamos la aplicación emacs necesita un buffer por defecto, llamado *scratch*, el cual podemos usarlo para cualquier cosa. Emacs necesita al menos un buffer, que además no siempre tiene porque estar asociado a un fichero, ya que en algunos casos no tiene sentido asociar un buffer a un fichero (por ejemplo si estás jugando al tetris). Además de ello, podemos ver un par de líneas en la parte inferior del frame (una más oscura que otra), la primera es llamada el modeline, que muestra información (modo en el que se trabaja, si el fichero ha sido modificado, línea actual, hora, etc). Debajo encontramos la otra línea (la más clara) la cual es llamada el mini buffer. El minibuffer es la embajada, es decir, desde donde podemos comunicarnos con emacs enviando comandos desde aquí.

Al fin y al cabo emacs es un interprete lisp escrito en C, y el resto de funcionalidades están escritas en lisp, por esta razón emacs es totalmente configurable en tiempo real; esto significa que podemos en cualquier momento cambiar las combinaciones de teclas por defecto sin necesidad de realizar cambios y tener que recompilar, como ocurre en otros editores lo cuales son de todo menos flexibles en este aspecto. Así que mientras usamos emacs aprenderemos lisp.

Continuando con el mundo de los buffers, si queremos guardar el buffer que no esté asociado a un fichero, o simplemente guardar algo que hemos modificado debemos pulsar (esto guarda varios buffers, no sólo el que se esté mostrando actualmente): C-x-s

Para eliminar dicho buffer usaremos: C-x k. Si lo que queremos es abrir un fichero, o bien crear un fichero utilizaremos C-x-f. Si el fichero existe lo abrirá, sinó lo creará

En emacs las ventanas son llamadas frames, mientras que si tenemos una ventana subdividida en partes, a cada una de dichas partes se le llamará ventana (esto es por razones históricas). Podemos dividir la ventana en dos de forma horizontal pulsando: C-x 2

O podemos dividirla de forma vertical con: C-x 3

Si queremos eliminar dicha ventana (que no implica que el buffer deje de existir) usaremos: C-x 0

Si queremos usar una sola ventana para todo el frame, en vez de que este dividida usaremos: C-x 1

Si queremos equilibrar todas las ventanas entre si usaremos C-x +

Por otra parte tenemos un tutorial que podemos ejecutar pulsando: C-h t

Probablemente 3 de los comandos más importantes sean estos:

  • M-x apropos : que busca comandos siguiendo una cadena como patrón.ejemplo: M-x apropos <CR> replace buscará todos los comandos relacionados o que contengan la cadena ‘replace’.
  • M-x describe-key : presionando una combinación de teclas devuelve el comando asignado;ejemplo: M-x describe-key <CR> C-g Explica que hace la combinación de teclas C-g, que nombre de comando largo tiene y la explicación de lo que hace.Como podemos observar cada comando puede ser ejecutado o bien usando keystrokes o pulsando M-x nombre-del-comando.
  • M-x where-is : en el cual escribes escribes el nombre del comando y devuelve la tecla asociada.ejemplo: M-x where-is <CR> tags-query-replace y devolvería la tecla asociada que por defecto que sería C-h w.

Además debemos tener en cuenta que existen más ‘describes’, quizás algo menos importante que describe-key, pero muy útil para futuros usos:

M-x describe-TAB : nos mostrará las posibles opciones, describe-function, describe-mode, etc.

Es decir que podemos usar el TAB (tabulador) para autocompletar, además podemos usar la combinación de teclas Alt+p para movernos por el historial hacia atrás, y Alt+n para movernos hacia delante. Estos últimos suelen ser muy útiles, debido a que emacs no guarda historiales como otros editores o entornos, sinó que emacs mantiene historiales independientes para cada tipo de acción, ya que no tendria mucho sentido si vuelves a buscar una cadena mirar en un historial general donde quizás hayas usado previamente una búsqueda de un comando. Sin embargo muchos por no decir el resto de entornos aún no tienen la lección aprendida.

Por último C-g lo que hará es cancelar cualquier combinación de teclas ya ‘iniciadas’ es decir, si pulsas por error C-h y querías seguir escribiendo en un buffer siempre puedes hacer C-g.

Por ejemplo C-h C-g, pulsamos el C-h por error, pero al pulsar el C-g nos quedamos como estábamos.

Por último, una vez controladas estas combinaciones de teclas fundamentales, podemos comenzar a usar el resto, lo mejor es imprimirse la quick reference card que trae emacs si se instala desde sources en el directorio ‘etc’ al descomprimir los fuentes de emacs. O bien descargarlo directamente desde aquí:

http://www.blackhats.es/emacs/emacs-refcard.pdf

A partir de este momento, uno ya se puede considerar seguro en emacs, y a partir de aquí uno puede comenzar a sentir la potencia que un entorno como emacs ofrece.

emacs by default


May 22 2008

Introducción a GNU/Emacs

Tag: introadmin @ 3:42 am

Este blog ha sido creado para introducir a nuevos usuarios de emacs hasta alcanzar un nivel de comodidad aceptable, así pues, también está orientado a usuarios que no hayan descubierto aún emacs.

Primero daré una breve explicación de que es emacs; la mejor manera de definir emacs es como un entorno extensible y configurable.

Existen muchas razones para usar emacs, que en su debido momento serán enumeradas; sin embargo, la razón de más peso para mi, es que los ingenieros, así como muchos aficionados a la informática, pasamos muchas horas delante del ordenador al dia, y de todo ese tiempo que nos pasamos delante del ordenador, nos pasamos un alto porcentaje editando buffers: cuando escribimos o leemos un correo, estamos editando un buffer, cuando editamos un fichero de texto, un documento, cuando estamos en el IRC o cualquier programa de mensajeria instantanea también lo hacemos, cuando leemos una web (sólo que este buffer sea de sólo lectura), cuando desarrollamos, y un sin fin de acciones más, lo único que cambia es el contexto en el cual editamos.

Por lo tanto, por qué debemos usar un entorno distinto para hacer la misma tarea? por qué debemos aprender nuevos keystrokes cada vez? No sería más productivo usar el mismo entorno para realizar la misma tarea pudiendo incluso intercomunicar distintos buffers dentro de dicho entorno para facilitar ciertas tareas y ser así más productivos?

Después de muchos años usando vi/vim, esta ha sido la razón principal por la que decidí usar emacs, y poco tiempo después, me di cuenta de la potencia que me habia perdido durante todo este tiempo, por eso quiero compartir las ventajas y algunos usos de emacs que me han sido útiles durante todo este tiempo.

A continuación varios links sobre charlas que dió José E. Marchesi sobre GNU/Emacs:

Introducción a GNU/Emacs (Parte 1) por José E. Marchesi

Introducción a GNU/Emacs (Parte 2) por José E. Marchesi

Editorwars Emacs vs Vim por José E. Marchesi

ftp://es.gnu.org/multimedia/video/Emacs-Editor_Wars-marchesi-1.ogm

ftp://es.gnu.org/multimedia/video/Emacs-Editor_Wars-marchesi-2.ogm

Nombrar también la nomenclatura que se usará para los keystrokes:

Teclas que se suelen combinar con keystrokes y que suelen empezar con:

  • Alt : Tecla alt.
  • C : Tecla control.
  • M : Tecla meta (equivale a Escape y soltar o bien Alt sin soltar).
  • SPC : Espacio
  • TAB : Tabulador
  • <CR> : Carriage return (Enter o Intro)

Forma típica de los keystrokes:

  • C-carácter : control + carácter (sin dejar de pulsar la tecla control)
  • C-carácter C-carácter : control + carácter, control + carácter (dejando de pulsar control + carácter entre la primera y la segunda combinación).
  • C-carácter C-carácter : control + carácter + carácter (sin necesidad de dejar de pulsar control y pulsando primero un carácter y luego el otro, tiene el mismo efecto que la anterior, y es más rápida).
  • M-carácter : Escape, carácter (escape, soltar, pulsar carácter).
  • M-carácter : Alt + carácter (tiene el mismo efecto que el de arriba y es más rápida).
  • C-carácter carácter : Control + carácter, soltar, carácter.

Emacs logo