Recientemente pregunté:
¿Cómo agregar un prefijo a cada línea?
Así que ve desde el siguiente código:
I said Hello
I said There
I said I am some code
Para codificar como:
Hello
There
I am some code
Ahora, ¿cómo elimino un número n de caracteres de una línea?
text-editing
editing
Luke Shimkus
fuente
fuente
Respuestas:
¡Es aún más fácil! Nuevamente, use comandos de rectángulo . Muévase a una esquina del rectángulo que desea eliminar, presione
C-SPC
para establecer la marca. Muévase a la otra esquina del rectángulo y presioneC-x r d
(delete-rectangle
). Por ejemplo, muévase a la primera línea en la que desea actuar, presioneC-a
ohome
para ir al principio de la línea, baje a la última línea en la que desea actuar, vaya a la esquina inferior derecha y luego elimine.C-u number C-f
C-x r d
Si la última línea tiene menos de la cantidad deseada de caracteres, puede ser más conveniente usar las esquinas inferior izquierda y superior derecha. Alternativamente, puede insertar caracteres basura (esto es útil si la primera línea y la última línea son más cortas).
Puede usar
C-x r k
para eliminar el rectángulo, lo que le permite tirar (C-x r y
) más tarde (moverse a la esquina superior izquierda del lugar donde desea insertarlo).También puede usar
C-x r t
(string-rectangle
) e ingresar una cadena vacía.Los comandos de rectángulo se basan en posiciones de columna. Si desea eliminar n caracteres, en lugar de n columnas (lo que hace la diferencia con los caracteres de varias columnas, como las pestañas), puede usar el reemplazo de expresiones regulares : reemplace
^.\{42\}
por nada para eliminar los primeros 42 caracteres de cada línea.fuente
Otra posibilidad: realmente me gusta usar múltiples cursores para tareas como esta. Disponible en
package.el
via MELPA, se ha convertido en una parte indispensable de mis emacs. Simplemente seleccionaríaI said
(y posiblemente incluiría el salto de línea antes), usarM-x mc/mark-all-like-this
y seguir mi camino. Si desea un control más detallado, puede usarmc/mark-next-like-this
omc/mark-next-lines
.Mis combinaciones de teclas:
¡Las rocas obligatorias de Emacs! episodio: http://emacsrocks.com/e13.html
fuente
Si ha
cua-mode
habilitado, entonces:Prefiero la
cua-mode
forma de trabajar, en comparación con el rectángulo estándar de Emacs donde el equivalente sería:El
cua-mode
guarda tres pulsaciones de teclas en comparación con el rectángulo estándar de Emacs.fuente
En aras de la exhaustividad: la eliminación de los primeros 3 caracteres de cada línea (formalmente: desde el punto en adelante o en la región) se puede hacer regexp-reemplazando
^...
(o más generalmente:)^.\{3\}
con una cadena vacía.Explicación: en regexen,
^
significa "comienzo de línea",.
significa "cualquier carácter" y\{n\}
significa " n repeticiones de la cosa anterior".Esto tiene un beneficio adicional de ser interactivo (a menos que uno presione
!
, lo que hace quequery-regexp-replace
reemplazar todo de ahora en adelante sin más preguntas).fuente
Y una posibilidad más:
F3C-aC-3C-dC-nF4
graba una macro de teclado, que dice básicamente "moverse al comienzo de la línea, eliminar tres caracteres y pasar a la siguiente línea". Luego, puede reproducirlo hasta el final del búfer C-uF4, o C-xC-kraplicarlo a las líneas en la región. Esto tiene una desventaja: se romperá cuando cualquier línea tenga menos de 3 caracteres.
fuente
Si es solo una línea, puedes zap-to-char con Mz asumiendo que el carácter no se repite entre el punto y el que deseas eliminar. En algunos casos, esto es más rápido que crear una región.
fuente