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?

¿Fue útil?

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 registro
  • C-x r y:tirar de un rectángulo
  • C-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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top