A menudo parece que quiero copiar y pegar varias columnas, por ejemplo, pego una columna
line one
line two
line three
Ahora me gustaría poder tirar de otra columna detrás de ella. Asumiendo que mi buffer de eliminación tiene lo siguiente:
added to one
added to two
added to three
¿Qué comando necesitaría invocar para obtener lo siguiente?
line one added to one
line two added to two
line three added to three
Actualizar
El uso de la funcionalidad de rectángulos de Emacs ayuda bastante, pero sigue siendo subóptimo. Por ejemplo, si usa Emacs en modo gráfico y está arrancando de programas externos, es decir, usando la funcionalidad Copiar y pegar de su sistema operativo, el búfer kill no tiene metainformación rectangular, por lo que el tirón rectangular no funciona. Otro problema es si tiene columnas con un ancho interno variable:
short line *
a much larger line which goes on
short line again
Y si desea tirar de forma rectangular, deberá colocar el puntero en el lugar marcado (*). Aunque esto es trivial con tres líneas, puede ser bastante engorroso asegurarse de colocar el puntero en el borde más externo de la primera columna.
Respuestas:
Aquí hay un comando único que puede usar para tirar de cada línea de la eliminación actual al final de cada línea posterior, comenzando en la línea actual.
La implementación es bastante simple. Toma el
current-kill
, divídelo por línea. Luego, para cada línea dividida: vaya al final de la línea dividida, inserte un espacio, inserte una línea y luego avance una línea.Esto también se podría hacer con una macro repetible que mueve una línea desde un lugar en el búfer al final de una línea en otra parte del búfer.
fuente