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:

Unknown dijo...

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

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

Unknown dijo...

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

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

:)

Unknown 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

nachouve 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