Подтвердить что ты не робот

Запуск макроса до конца текстового файла в Emacs

У меня есть текстовый файл с некоторым содержимым примера, как показано ниже:

Sno = 1p
Sno = 2p
Sno = 3p

Я хочу удалить p из каждого столбца. С этим намерением я напишу макрос:

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

Нажатие e дважды удалит p, но если я захочу сделать то же самое до конца файла, как я могу это сделать, я не могу продолжать нажимать e, если у меня есть 20000 таких строк, Что нужно сделать?

Пожалуйста, не предлагайте regex, так как это пример примера, а не фактический случай. Пожалуйста, предложите какой-либо elisp, мне удобно запоминать shortcutf для emacs.

4b9b3361

Ответ 1

вы можете попробовать: M-20000 C-x e, чтобы сделать материал за 20000 раз, после определения макроса.

Ответ 2

M-0 C-x e, чтобы повторить последний макрос до тех пор, пока не произойдет ошибка (после последней строки произойдет ошибка C-s = или C-n).

Вы можете услышать раздражающий звуковой сигнал.

Ответ 3

Вы можете использовать функцию apply-macro-to-region-lines для применения последнего заданного макроса клавиатуры ко всем линиям в регионе. Итак, следующие шаги:

  • Определите свой макрос клавиатуры (который вы уже сделали, но я добавил еще одну C-f в третью строку):

    C-x ( C-s = RET C-f C-f C-f DEL C-n C-x )

  • Выберите весь буфер с помощью команды "mark-whole-buffer" (по умолчанию она привязана к C-x h). Кроме того, если вы просто хотите изменить определенное количество строк, просто выберите строки, которые вы хотите изменить.

  • Запустите функцию apply-macro-to-region-lines (по умолчанию она привязана к C-x C-k r).

Все p будут удалены.

Ответ 4

Обычно я указываю имя макросу после определения его с помощью M-x name-last-kbd-macro, поэтому я могу назвать его с помощью M-x удобно. И затем я называю это числовым префиксом. Например.

M-1000 M-x macroname

В файлах, на которых я работаю, обычно нет 1000 мест, где макрос может действовать, поэтому 1000 достаточно велик и автоматически остановится в конце файла. Вы можете использовать, скажем, 1000000 в качестве префикса, если у вас есть большие файлы, и если он еще не достаточно, вы можете перезвонить ему с 1000000 как префикс.