que - emacs linux
Ejecutando una macro hasta el final del archivo de texto en Emacs (4)
Normalmente le doy un nombre a la macro después de definirlo con Mx name-last-kbd-macro
, por lo que puedo llamarlo con Mx convenientemente. Y luego lo llamo con un prefijo numérico. P.ej
M-1000 M-x macroname
Los archivos en los que trabajo generalmente no tienen 1000 lugares donde la macro puede actuar, por lo que 1000 es lo suficientemente grande y se detendrá automáticamente al final del archivo. Puede usar, digamos, 1000000 como prefijo si tiene archivos más grandes, y si aún no es suficiente, puede llamarlo de nuevo con 1000000 como prefijo.
Tengo un archivo de texto con un contenido de muestra como se muestra aquí:
Sno = 1p
Sno = 2p
Sno = 3p
Lo que quiero es eliminar la p
de cada una de las columnas. Con esta intención escribo una macro:
M-x //go to buffer
C-x (//start the macro
C-s = // search for equalto sign
RET C-f C-f // reach to te alphabet ''p''
DEL // Delete
C-n C-x )//go to new line and Close the macro definition
C-x e
Al presionar e
dos veces se eliminará p
, pero en caso de que quiera hacer lo mismo hasta el final del archivo, ¿cómo puedo hacerlo? No puedo seguir presionando e
si tengo 20000 de esas líneas. ¿¿Lo que debe hacerse??
Por favor, no sugiera expresiones regulares, ya que este es un ejemplo de muestra, no el caso real. Por favor, no sugiera ningún elisp, me siento cómodo recordando shortcutf para emacs.
Puede probar: M-20000 Cx e
para hacer las cosas 20000 veces, después de definir la macro.
Puede usar la función "aplicar macro a líneas de región" para aplicar la última macro de teclado definida a todas las líneas de una región. Entonces, los pasos que sigue son:
Defina su macro de teclado (que ya había hecho pero he agregado otra Cf a la 3ra línea):
Cx ( Cs = RET Cf Cf Cf DEL Cn Cx)
Seleccione todo el búfer con el comando "mark-whole-buffer" (por defecto, está vinculado a Cx h ). Alternativamente, si solo desea cambiar una cierta cantidad de líneas, simplemente seleccione las líneas que desea cambiar.
Ejecute la función "apply-macro-to-region-lines" (de forma predeterminada, está vinculada a Cx Ck r ).
Todas las p se eliminarán.
M-0 Cx e
para repetir la última macro hasta que ocurra un error (después de la línea final, Cs =
o Cn
será un error).
Es posible que escuche un pitido molesto.