2008/06/06

Selección vertical en emacs

Emacs es un super editor para programadores. Es un poco complejo, al principio, y yo confieso que lo intenté usar en 2 ocasiones y decidí volver a editores "menos sofisticados". A día de hoy, soy un entusiasta de Emacs, pero no me enzarzaré en la guerra entre editores... Con los editores me pasa como con los GIS, uso muchos diferentes, según para qué cosa... aunque Emacs apunta a ser el "EDITOR" para todo. ¿Cuál será el GIS definitivo...?

Emacs tiene innumerables características y funciones. Hoy voy a comentar una bastante curiosa (no exclusiva de emacs): la selección vertical también llamada, block-selection, o rectangle selection.

En emacs, los rectángulos son zonas rectangulares definidas por dos columnas y dos filas cualesquiera. Esto permite, por ejemplo, copiar, pegar, borrar o insertar columnas de texto en cualquier parte, o realizar ciertas operaciones sobre el texto dentro del rectángulo.

Para definir la región o rectángulo sobre el que se va a aplicar el comando se pone una marca (C-space) en una esquina y el cursor en la esquina diagonalmente opuesta.


Una vez seleccionado se pueden realizar las acciones típicas sobre la región seleccionada intercalando 'r' en el comando:












Cortar (kill)C-x r k
Pegar (yank)C-x r y
Borrar (delete)C-x r d
Insertar espacio (open)C-x r o
Limpiar (clear)C-x r c
Insertar texto (string)C-x r t string RET

En el ejemplo, he usado un rectangle para copiar unas cotas de un MDE con formato xyz de manera muy rápida y visual:

       
   

6 comentarios:

JOSHUA dijo...

Hola... una pregunta, como hiciste para pegar en otro buffer solamente la ultima columna de la seleccio?
Gracias

Nacho Uve dijo...

La selección, en el caso de la selección vertical, está definida por la esquina superior izquierda y la inferior derecha de la zona marcada (color azul en la imagen).

Si tecleas 'C-x r k' realizas el corte, vas al buffer deseado y luego tecleas
'C-x r y'.

Con esto se debería pegar sólo la columna seleccionada.

Espero que te funcione.

JOSHUA dijo...

Hola, Gracias por contestar... si me funcionó pero solamente se puede cortar el rectangulo?, no se puede copiar?
Gracias.

Nacho Uve dijo...

Pues no investigué en ese punto... pero se me ocurre una alternativa; hacer el corte y pegarlo inmediatamente en el mismo buffer.

Luego vas al otro buffer y vuelves a pegarlo.

:)

JOSHUA dijo...

Pues yo encontre que es como mas facil copiarla a un registro C-x r r a y despues llamar el registro C-x r i a ... Saludos

Nacho Uve dijo...

Buen apunte! Gracias joshua.

Al hilo de todo esto, ahí va una miniguía de emacs interesante. El apartado 9 hablar sobre registros y rectangulos:

http://narodnaia.googlepages.com/emacs.pdf