Pregunta
He leído en varios lugares que las funciones de rectángulo en emacs son muy útiles.He leído un poco sobre ellos y no puedo entender por qué.Quiero decir, cuando quieres eliminar un párrafo, marcas la primera fila/columna y luego la última, y eso en realidad es un rectángulo, ¿verdad?Pero aún puedes usar la muerte normal...
Entonces, ¿qué tipo de transformaciones harías con ellos?
Solución
Si tiene datos en columnas en un archivo de texto con M-x delete-rectangle
o M-x kill-rectangle
puede eliminar una sola columna de datos.Similarmente, M-x yank-rectangle
pegará en una columna de texto.
Por ejemplo, tomemos el siguiente texto:
1. alligator alphorn
2. baboon bugle
3. crocodile cornet
4. dog didgeridoo
5. elephant euphonium
6. fish flugelhorn
7. gopher guitar
Seleccione desde la a de cocodrilo hasta la g de guitarra.El principio y el final de la selección marcan dos esquinas opuestas del rectángulo.Ingresar M-x kill-rectangle
e inmediatamente tienes:
1. alphorn
2. bugle
3. cornet
4. didgeridoo
5. euphonium
6. flugelhorn
7. guitar
Luego coloque la marca al final de la línea superior, agregue algunos espacios si es necesario e ingrese M-x yank-rectangle
y ta-da!Ha reordenado las columnas:
1. alphorn alligator
2. bugle baboon
3. cornet crocodile
4. didgeridoo dog
5. euphonium elephant
6. flugelhorn fish
7. guitar gopher
Otros consejos
Me gusta usar el rectángulo para dos propósitos principales: insertar el mismo texto en cada línea o eliminar una columna de texto (similar a la respuesta de Dave Webb).
Hay 2 atajos útiles para estos, C-x r k
matará un rectángulo, y C-x r t
para insertar (hay otros comandos de rectángulo con un C-x r
prefijo, pero estos son los que yo uso).
Entonces, digamos que deseas tomar un código y formatearlo para poder publicarlo en una publicación de Stack Overflow...necesitas prefijar con 4 espacios.Entonces, ve al principio de la primera línea, C-SPC
para marcar, luego vaya al principio de la última línea y C-x r t <SPC> <SPC> <SPC> <SPC> <RET>
, ¡Y ahí lo tienes!Luego puedes copiarlo y pegarlo en Stack Overflow.Me he encontrado con situaciones más complejas en las que esto es útil, en las que realmente tienes texto que deseas insertar en cada línea en un lugar particular.
Entonces, en la otra situación, como la situación de Dave Webb, si quieres eliminar un rectángulo, usa C-x r k
aunque porque es mucho más rápido ;-)
Además, según mi tarjeta de referencia que imprimí cuando comencé, puedes hacer lo siguiente:
C-x r r
:copiar a un registroC-x r y
:tirar de un rectánguloC-x r o
:abrir un rectángulo, desplazando el texto hacia la derecha (lo que sea que eso signifique...)C-x r c
:borre un rectángulo (supongo que eso significa reemplazarlo con espacios, pero tendría que probarlo para verlo)C-x r t
:prefijo con texto (como se describe arriba)C-x r k
:matar (como se describe arriba)
En emacs24+ también hay una función para numerar líneas:
(rectangle-number-lines START END START-AT &optional FORMAT)
Insert numbers in front of the region-rectangle.
START-AT, if non-nil, should be a number from which to begin
counting. FORMAT, if non-nil, should be a format string to pass
to `format' along with the line count. When called interactively
with a prefix argument, prompt for START-AT and FORMAT.
esta ligado a Cx r N por defecto.