如何用"<"和">"有一个循环?

时间:2016-10-01 09:05:38

标签: loops text emacs

我的文本文件如下所示:

laudare
at
dominus
serere1
enim

我需要的是:

<laudare>
<at>
<dominus>
<serere1>
<enim>

我是编程的初学者,我试图编写这个elisp函数:

(defun insert-angle-brackets-at-word () 
  "Insert angle brackets, i.e. <WORD>."
  (interactive)
  (goto-char (point-min))
  (insert "\<")
  (forward-word)
  (insert "\>")
  (forward-line 1))

这个功能显然&#34;工作&#34;仅用于文本文件中的第一个单词。该函数应该如何用于整个文本文件?

2 个答案:

答案 0 :(得分:0)

无需循环,您可以使用replace-string替换所有换行符:

  (goto-char (point-min))
  (insert "<")
  (replace-string "\n" ">\n<")
  (goto-char (point-max))
  (insert ">")

答案 1 :(得分:0)

正如其他人所说,您可以使用查找和替换,但您可能还需要查看macrosmultiple cursors。根据您的想法,它们可能是未来实现此类行为的更简单方法。

使用微距,您可以按f3开始录制微博,然后使用home转到该行的开头,使用<删除开头delete ,使用M-f前进一个单词,使用>删除结束delete,然后使用down然后home向下到下一行的开头}。使用f4完成宏。

所以,回顾一下:f3homedeleteM-fdeletedownhomef4

然后您可以调用宏(也使用f4),它将从当前点位置重新执行该系列命令。提供带C-u的前缀参数以获得多次执行。

多个游标的工作方式类似,但您可以同时在多个点上执行操作。这不是我试过的包,但它使用相同的原则。