如何在Emacs中一次添加或删除多行文本末尾的文本?

时间:2012-05-09 23:01:29

标签: emacs

e.g。我想在一堆突出显示的行的末尾添加双引号。或者我想从一堆突出显示的行中删除两个字符。有这个命令吗?我知道插入一个矩形文本有“M-x r t”,但只有当所有内容都垂直排列时才有效,这通常不是行尾的情况。

3 个答案:

答案 0 :(得分:7)

你可以

  1. 保存键盘宏 CX CE 比照 CX , RESP。 CX CE 退格 退格 比照 CX 。然后用 C-x e e 调用宏, e e ...
  2. 使用 M-C - %进行正则表达式替换。将$替换为" 要添加双引号,请将..$替换为不删除最后两个 字符。

答案 1 :(得分:5)

M-x replace-regexp $ "应该有效,但我不确定replace-regexp是否尊重标记。

答案 2 :(得分:3)

这是一种更直观的方式,当您在一行中键入时,查看每行中的结果。

http://github.com/capitaomorte/yasnippet抓取最近的yasnippet副本并添加到.emacs

(require 'yasnippet)

(defun yas/add-to-end-of-lines-snippet ()
  (interactive)
  (when (region-active-p)
    (let ((snippet (replace-regexp-in-string "$" "$1" (buffer-substring (region-beginning) (region-end)))))
      (delete-region (region-beginning) (region-end))
      (yas/expand-snippet snippet))))

现在选择一个地区并输入M-x add-to-end-of-lines-snippet