Archivo de la etiqueta: emacs

Autotexto en GNU/Linux (II): Abreviaturas en Emacs.

En el anterior artículo vimos una forma de insertar autotexto en distintas aplicaciones de GNU/Linux.

En esta entrega vamos a ver cómo hacer esto pero dentro de nuestro editor favorito: emacs.

Las abreviaturas en emacs son expresiones o palabras que se expanden en frases o cadenas que elijamos. El objetivo es ahorrarnos caracteres a la hora de tipear y, por tanto, acelerar nuestra escritura (y, por ende, nuestra productividad). Ejemplo: escribimos mucho nuestro nombre completo, así que definimos una abreviatura de forma que cuando tecleemos (por ejemplo) «nn» sin comillas, al pulsar espacio o intro se expanderá a nuestro nombre completo. ¿Cómo hacerlo? Usando la siguiente combinación de teclas:

C-x a i g

Esta combinación define una abreviatura (tenemos que pulsar esto tras escribir la palabra abreviada -en este caso «nn» sin comillas y sin poner espacios; al hacerlo nos pide que metamos la frase a abreviar, en este caso nuestro nombre completo). La letra «g» en la combinación de teclas es para que las abreviaturas estén disponibles para todos los buffers. Si por alguna razón queréis que sólo estén disponibles para un buffer usad «l» en su lugar.

Una vez creada (podemos crear tantas como queramos), si probamos a escribir «nn» no se sustituye por nuestro nombre, ¿por qué? Pues porque tenemos que estar en el modo menor Abbrev-mode. Activarlo con m-x Abbrev-mode y veréis qué bien!

Para eliminar las abreviaturas definidas:

M-x kill-all-abbrevs

Si queréis que esto esté siempre disponible cuando arranquéis emacs se pueden meter en el archivo de configuración .emacs.el.

Aunque esta funcionalidad es bastante práctica, en un próximo artículo os comentaré otro método que permite usar abreviaturas de esta forma (*) pero para todas las aplicaciones del sistema, lo cuál mejora bastante lo comentado en este artículo.

 

(*) autoexpandiendo el texto automáticamente al introducir una abreviatura y, por tanto, sin necesidad de usar combinaciones de teclas como en un artículo anterior (usando xclip).

Un poco de… Emacs (VI): insertar salida de comandos

Si trabajáis con la shell de Linux asiduamente como es mi caso, en ocasiones os resulta útil insertar en un fichero de texto el resultado de un comando.

Lo normal en estos casos es abrir una shell, ejecutar el comando, seleccionar la salida con el ratón, copiar y luego volver al editor (emacs, claro) y darle a pegar.

Otra opción es redirigir la salida del comando a un texto plano y luego insertar dicho archivo en el fichero en el que estamos trabajando (C-x i).

Sin embargo, lo más directo es usar la combinación C-u M-! (*). Con la última (M-!), lo que hace emacs es pedir en el minibuffer que introduzcáis un comando y la salida os la muestra en un buffer nuevo (no en el que estáis editando). Para que se inserte directamente donde tenéis el cursor hay que pulsar previamente C-u.

Recordad que:

 

C-u significa pulsar Control y la tecla "U",
C-x i significa pulsar Control y la tecla "X" y luego, tras soltar ambas, pulsar la tecla "I" (i latina),
M-! significa pulsar Alt y la tecla que tiene el símbolo "!" (admiración cerrado), que es la tecla del 1. Por tanto, habrá que pulsar Alt + Mayúsuclas + 1.
C-u M-! significa primero hacer el C-u, soltamos las dos teclas y hacemos el M-!.

 

(*) M-! : La tecla que aparece tras el «-» es la admiración cerrada pero por algún motivo, la fuente de wordpress no la pone correctamente (es problema de la fuente porque en el texto monoespaciado sí sale bien como se puede observar). Si alguien conoce este motivo agradeceré un comentario. PD. No es el «pipe», pues el pipe sí que lo muestra cuando se pulsa Alt gr + 1 (! es admiración y | es pipe). Sin embargo la admiración abierta sí la pone bien «¡».

Un poco de… Emacs (V): números de línea

Introducción

En ocasiones, cuando estamos editando un archivo de texto, nos puede interesar saber el número de línea en el que nos encontramos. Si estamos tecleando código fuente nos puede interesar que se muestre a la izquierda el número de línea (aunque espero que no sea para usar instrucciones de tipo goto… :-P).

Vamos a ver cómo hacer éstas y otras funciones con los números de línea desde nuestro editor de texto favorito (emacs, por supuesto).

Contar líneas, palabras, caracteres

Emacs tiene varias funciones para contar líneas y palabras. Unas de las más útiles son:

count-lines-page

que nos muestra el número total de líneas y luego entre paréntesis muestra las líneas antes de la actual y las que hay después (ejemplo: 53 (50 + 3)).

Si queremos contar palabras y caracteres:

count-words

Esto nos indica el número de líneas, de palabras y de caracteres del documento.

Ambas funciones tienen la opción de usarse para una región (i.e., un fragmento de texto seleccionado): count-lines-region y count-words-region.

Mostrar número de línea actual

Si queremos que siempre que escribamos se muestre el número de línea en la barra de estado (modeline) podemos ejecutar en el minibuffer este comando:

line-number-mode

Esta función es de tipo toggle (conmutador), es decir, que cada vez que la ejecutamos conmuta, en este caso, el modo «número de líneas». Así, si la ejecutamos una vez nos indicará que el modo de número de líneas está activado. Si la ejecutamos otra vez lo desactiva. La siguiente lo vuelve a activar, y así sucesivamente.

Con este modo, como decimos, el número de línea aparece en la barra de estado de emacs (modeline).

Conocer la línea actual

Si queremos conocer el número de línea actual y no tenemos activado el modo «line-number-mode» visto antes, podemos ejecutar esta función en el minibuffer:

what-line

y nos lo dirá (¡qué listo que es este editor! ;-)).

También existe la función what-cursor-position, que en este caso nos dirá en qué caracter está el cursor y qué posición ocupa en el documento.

Mostrar números de línea a la izquierda

Si lo que queremos es mostrar a la izquierda el número de la línea podemos usar uno de los muchos modos que han creado otros usuarios. Aquí tenéis una buena descripción de los modos y funciones disponibles referentes a numeración de líneas en emacs. En particular, yo uso yo uso line-num.el.

Este modo muestra, a la izquierda de cada línea, el número de la misma. Si queréis usar este modo, tenéis que tener el fichero con el código (*) del mismo en el directorio $HOME/.emacs.d por un lado y, por el otro, en el fichero $HOME/.emacs.el incluir esta línea

(load "line-num.el")

Una vez hecho esto, para activar el modo en el editor, ejecutaremos esto en el minibuffer:

linum-mode

Esta función activa el modo linum, que es el que nos mostrará los números de línea a la izquierda. Si queremos desactivarlo haremos como en el caso anterior: volver a ejecutarlo, ya que es, también, una función de tipo conmutador.

Cuando usáis este modo, las líneas os aparecen así:

emacs-linum_mode

Espero que os haya resultado útil el artículo. Si tenéis alguna duda o sugerencia dejadme un comentario.

 

(*) Emacs es un editor extensible, al que se pueden añadir infinidad de funciones nuevas usando el lenguaje de programación emacs-lisp. Simplemente cargando al inicio el fichero con el código fuente de dichas funciones ya las tendremos disponbiles para su uso. Asimismo, se pueden cambiar funciones, comportamientos y combinaciones de teclas para personalizarlo y adaptarlo para nuestra comodidad.