Stopniowo zamień podany ciąg

12

Powiedzmy, że mam taki tekst poniżej:

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

Teraz chcę zastąpić nntakimi liczbami

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

Kiedyś M-x replace-regexp nn RET \# RETto osiągałem.

Pytania:

  1. Chcę zacząć numer zastępczy, aby zacząć od, 1a nie od 0. A raczej zacznij od określonej liczby powiedz 25. Jak zmodyfikować powyższe polecenie?
  2. Jak zastąpić nncyframi jak 001, 002.... 998, 999etc - to znaczy z wiodącymi zerami
Prasanna
źródło
Nie o to prosisz, ale innym sposobem jest użycie makra wraz z rejestrem.
Caterpillar

Odpowiedzi:

12

Ogólna technika

Łańcuch zastępczy może zawierać dowolny kod lisp. Z dokumentacji dotyczącej replace-regexp :

W rozmowach interaktywnych tekst zastępczy może zawierać „\”, a po nim wyrażenie Lisp używane jako część tekstu zastępczego. Wewnątrz tego wyrażenia „\ &” to ciąg znaków oznaczający całe dopasowanie, „\ N” częściowe dopasowanie, „# &” i „#N” odpowiednie wartości liczbowe z „ciąg-na-liczbę” i „# „sama dla„ licznika zamienników ”liczba zamienników wystąpiła do tej pory, zaczynając od zera.

Możemy użyć tej techniki na wiele sposobów.

Zaczynając od 1

Wat chcemy zrobić, to wymienić nnjedną więcej niż replace-countty stosować \#.

Zadzwoń #'replace-regexpz argumentem \,(1+ \#):

C-M-% nn \,(1+ \#)zastąpi nn z 1pierwszym, a następnie 2, 3itp

Zaczynać od 25

Możesz to zmienić, nie tylko dodając jeden, ale (w twoim przykładzie) 25:

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

Zera wiodące

Lub możemy użyć, formataby dodać wiodące zera. Spowoduje to zastąpienie nnz 000, 001, 002, itd. Można łączyć inny kod lisp wyżej zaczynają się 001, 025czy cokolwiek chcesz.

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

zck
źródło
5

Możesz także użyć cua-mode.

Wybierz region prostokąta (wszystkie nn), a następnie M-x cua-rectangle-mark-mode.

Następnie M-ni zaakceptuj wartości domyślne.

djangoliv
źródło
Chciałbym również przyjąć tę odpowiedź
Prasanna,