开发者

Appending characters to the end of each line in Emacs

开发者 https://www.devze.com 2023-02-08 04:54 出处:网络
Assume I have a text file with content 1 123 12 12345 开发者_如何学编程 If I want to add an \'a\' in the beginning of each line I can simply use string-rectangle (C-x r t), but what if I want to app

Assume I have a text file with content

1
123
12
12345
开发者_如何学编程

If I want to add an 'a' in the beginning of each line I can simply use string-rectangle (C-x r t), but what if I want to append an 'a' to the end of each line, after which the file should become

1a
123a
12a
12345a

Thanks.


You could use replace-regexp for this purpose, with the $ regexp metacharacter that matches end-of-line. Go to the start of the buffer, and then do M-x replace-regexp, and answer $ and (your text) to the two prompts.

Or, in emacs-speak, for your specific example of adding a:

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


Emacs keyboard macros are your friend.

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

Which just sets up the keyboard macro by: starting the keyboard macro (C-x (), go to the end of the line (C-e), insert an a, go to the next line (C-n), and then end the macro recording (C-x )).

Now you can either execute it (C-x e), and keep pressing e for each line you want to have it run on, or you can run it on a region with C-x C-k r.

If you do this a lot, you can save the macro, or you can write a function. This would be one such function:

(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)))
0

精彩评论

暂无评论...
验证码 换一张
取 消