Reemplazar gradualmente una cadena dada


12

Digamos que tengo un texto como el siguiente:

AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)
AC (nn)

Ahora quiero reemplazar el nncon números así

AC (0)
AC (1)
AC (2)
AC (3)
AC (4)
AC (5)
AC (6)
AC (7)
AC (8)
AC (9)
AC (10)

Solía M-x replace-regexp nn RET \# RETlograr esto.

Preguntas:

  1. Quiero comenzar el número de reemplazo para comenzar en 1lugar de desde 0. O más bien comenzar desde un número específico, por ejemplo 25. ¿Cómo debo modificar el comando anterior?
  2. Cómo reemplazar nncon dígitos como 001, 002.... 998, 999etc. - Quiero decir con ceros a la izquierda

Esto no es lo que está pidiendo, pero otra forma de hacerlo es usar una macro junto con un registro.
Caterpillar

Respuestas:


12

Técnica general

Su cadena de reemplazo puede contener código arbitrario de lisp. De la documentación para replace-regexp :

En las llamadas interactivas, el texto de reemplazo puede contener '\', seguido de una expresión Lisp utilizada como parte del texto de reemplazo. Dentro de esa expresión, '\ &' es una cadena que denota la coincidencia completa, '\ N' una coincidencia parcial, '# &' y '#N' los valores numéricos respectivos de 'cadena a número' y '# 'sí mismo para' reemplazar-conteo ', el número de reemplazos ocurrió hasta ahora, comenzando desde cero.

Podemos usar esta técnica de varias maneras.

Empezando desde 1

Lo que queremos hacer es reemplazarlo nnpor uno más que el replace-countque usó \#.

Llama #'replace-regexpcon el argumento \,(1+ \#):

C-M-% nn \,(1+ \#)reemplazará con nn 1primero, y luego 2, 3, etc.

A partir de 25

Puede modificar esto no solo agregando uno, sino (en su ejemplo) 25:

C-M-% nn \,(+ 25 \#)

Ceros a la izquierda

O podemos usar formatpara agregar ceros a la izquierda. Esto reemplazará nncon 000, 001, 002, etc Usted puede combinar otro código Lisp de arriba para empezar a 001, 025o lo que quiera.

C-M-% nn \,(format "$03d" \#)


5

También puedes usar cua-mode.

Seleccione la región del rectángulo (todas las nn) y luego M-x cua-rectangle-mark-mode.

A continuación, M-ny acepte los valores predeterminados.


Ojalá pudiera aceptar esto también como respuesta
Prasanna,
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.