Поступово замініть заданий рядок


12

Скажімо, у мене є такий текст, як це нижче:

Змінного струму (нн)
Змінного струму (нн)
Змінного струму (нн)
Змінного струму (нн)
Змінного струму (нн)
Змінного струму (нн)
Змінного струму (нн)
Змінного струму (нн)
Змінного струму (нн)
Змінного струму (нн)
Змінного струму (нн)

Тепер я хочу замінити такі nnцифри

Змінного струму (0)
Змінного струму (1)
Змінного струму (2)
Змінного струму (3)
Змінного струму (4)
Змінного струму (5)
Змінного струму (6)
Змінного струму (7)
Змінного струму (8)
Змінного струму (9)
Змінного струму (10)

Я раніше M-x replace-regexp nn RET \# RETце робив.

Запитання:

  1. Я хочу почати номер заміни, щоб почати з, 1а не з 0. А точніше, почніть з вказаного числа скажімо 25. Як я можу змінити вищевказану команду?
  2. Як замінити nnцифри на кшталт 001, 002.... 998, 999тощо, я маю на увазі провідні нулі

Це не те, що ви просите, але інший спосіб зробити це - використовувати макрос разом з реєстром.
Caterpillar

Відповіді:


12

Загальна техніка

Ваша рядок заміни може містити довільний код lisp. З документації на заміну-regexp :

В інтерактивних дзвінках текст заміни може містити "\", а потім вираз Lisp, що використовується як частина тексту заміни. Всередині цього виразу '\ &' - це рядок, що позначає всю відповідність, '\ N' часткове збіг, '# &' та '#N' відповідні числові значення від 'рядок до числа' та '# 'сама для' замінити-рахувати ', кількість замін відбулася поки що, починаючи з нуля.

Ми можемо використовувати цю техніку різними способами.

Починаючи з 1

Ват, який ми хочемо зробити, це замінити nnна один більше, ніж replace-countви використовували \#.

Дзвінок #'replace-regexpз аргументом \,(1+ \#):

C-M-% nn \,(1+ \#)замінить пп з 1першим, а потім 2, 3і т.д.

Починаючи з 25

Ви можете змінити це не просто додавши один, а (у вашому прикладі) 25:

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

Провідні нулі

Або ми можемо використовувати formatдля додавання ведучих нулів. Це замінить nnз 000, 001, 002і т.д. Ви можете комбінувати інший код LISP , щоб почати на 001, 025або все , що ви хочете.

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


5

Ви також можете використовувати cua-mode.

Виберіть область прямокутника (усі nn), а потім M-x cua-rectangle-mark-mode.

Далі M-nі прийміть значення за замовчуванням.


Я б хотів, щоб і я міг прийняти це як відповідь
Прасанна
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.