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

Добавление символов в конец каждой строки в Emacs

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

1
123
12
12345

Если я хочу добавить 'a' в начале каждой строки, я могу просто использовать строковый прямоугольник (Cx rt), но что, если я хочу добавить 'a' в конец каждой строки, после чего файл должен стать

1a
123a
12a
12345a

Спасибо.

4b9b3361

Ответ 1

Вы можете использовать replace-regexp для этой цели с метасимволом $ regexp, который соответствует концу строки. Перейдите в начало буфера, а затем выполните M-x replace-regexp и ответьте $ и (ваш текст) на два приглашения.

Или, в emacs-talk, для вашего конкретного примера добавления a:

M-< M-x replace-regexp RET $ RET a RET

Ответ 2

Макросы клавиатуры Emacs - ваш друг.

C-x ( C-e a C-n C-x )

Что только устанавливает макрос клавиатуры: начиная с макроса клавиатуры (C-x (), перейдите к концу строки (C-e), вставьте a, перейдите к следующей строке (C-n), а затем завершите макросъемку (C-x )).

Теперь вы можете выполнить его (C-x e) и продолжать нажимать e для каждой строки, в которой вы хотите ее запустить, или вы можете запустить ее в области с C-x C-k r.

Если вы сделаете это много, вы можете сохранить макрос, или вы можете написать функцию. Это была бы одна такая функция:

(defun add-string-to-end-of-lines-in-region (str b e)
  "prompt for string, add it to end of lines in the region"
  (interactive "sWhat shall we append? \nr")
  (goto-char e)
  (forward-line -1)
  (while (> (point) b)
    (end-of-line)
    (insert str)
    (forward-line -1)))