2008-09-12 23 views
16

He leído en varios lugares que las funciones rectangulares en emacs son muy útiles. He leído un poco sobre ellos, y no puedo entender por qué. Quiero decir, cuando quieres matar un párrafo, marcas la primera fila/columna y luego la última, y ​​eso es en realidad un rectángulo, ¿verdad? Pero aún puedes usar el kill normal ...Rectángulo funciones en emacs

Entonces, ¿qué tipo de transformaciones harías con ellas?

Respuesta

23

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. Del mismo modo, 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 de la una de cocodrilo a la g de guitarra. El comienzo y el final de la selección marcan dos esquinas opuestas del rectángulo. Introduzca M-x kill-rectangle y usted tiene inmediatamente:

1. alphorn 
2. bugle 
3. cornet 
4. didgeridoo 
5. euphonium 
6. flugelhorn 
7. guitar 

Siguiente poner la marca al final de la línea superior, añadir algunos espacios, si es necesario e introduzca M-x yank-rectangle y ta-da! Usted 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  
15

me gusta usar rectángulo para 2 propósitos principales, insertando el mismo texto en cada línea, o matar a una columna de texto (similar a la respuesta de Dave Webb).

Hay 2 accesos directos útiles para estos, C-x r k matará a un rectángulo, y C-x r t para insertar (hay otros comandos rectángulo con un prefijo C-x r, pero estos son los que utilizo).

Digamos que quiere tomar un código y formatearlo para que pueda publicarlo en una publicación de Stack Overflow ... debe prefijar con 4 espacios. Por lo tanto, vaya al comienzo de la primera línea, C-SPC para marcar, luego vaya al comienzo de la última línea y C-x r t <SPC> <SPC> <SPC> <SPC> <RET>, ¡y ahí lo tiene! Luego puede copiarlo y pegarlo en Stack Overflow. Me he encontrado con situaciones más complejas en las que esto es útil, donde realmente tienes el texto que deseas insertar en cada línea en un lugar en particular.

Así que la otra situación como la situación de Dave Webb, si quieres matar a un rectángulo, utilizar C-x r k sin embargo, porque es sólo mucho más rápido ;-)

También, de acuerdo a mi reference card que Imprimí cuando primero comenzó, puede hacer lo siguiente:

  • C-x r r: copiar a un registro
  • C-x r y: un tirón a un rectángulo
  • C-x r o : abre un rectángulo, desplaza el texto hacia la derecha (lo que sea que eso signifique ...)
  • C-x r c: un rectángulo en blanco (que supongo que eso significa reemplazarlo con espacios, pero que tendría que probarlo para ver)
  • C-x r t: prefijo con el texto (como se describe más arriba)
  • C-x r k: matar (como se describe anteriormente)
+0

Tengo activado el modo de finalización parcial, así que para el yank-rectangle puedo usar M-x y-r [tab] [ret] pero tienes razón, los accesos directos predeterminados son más rápidos. –

+1

Guau ... usa Emacs durante 20 años impares y todavía hay cosas nuevas que aprender. –

+1

"C-x r t RETORNO ESPACIO ESPACIO ESPACIO ESPACIO RETORNO" ¿El primer resultado parece ser un error? Obtengo el efecto deseado al escribir: C-x r t ESPACIO ESPACIAL ESPACIO ESPACIAL RETORNO – Lii

1

En emacs24 + también hay función para líneas de numeración:

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

se binded a C-x r N de forma predeterminada.

Cuestiones relacionadas