如何让 emacs 将文本插入任意文件?

如何让 emacs 将文本插入任意文件?

我正在尝试创建一个函数,将文本插入任意文件而无需切换到该文件的缓冲区。

我知道这可以通过 echo 来完成,但是有没有办法仅使用 elisp 来完成?

答案1

尝试这个功能:

(defun append-string-to-file (string filename)
  "Appends STRING to FILENAME."
  (interactive)
  (append-to-file string nil filename))

答案2

您需要将缓冲区设为当前状态才能对其内容执行几乎所有操作。将缓冲区设为当前状态与 Lisp 解释器有关,它不涉及在窗口中显示缓冲区。基本操作是set-buffer设置缓冲区以进行后续操作,然后save-excursion执行一段代码并恢复当前缓冲区。

有许多宏被调用with-SOMETHING来执行具有不同设置(例如当前缓冲区)的代码,并在代码退出时恢复设置(无论出于任何原因,无论是正常退出还是异常)。

(with-current-buffer "name-of-file-that's-already-open"
  (goto-char 42)
  (insert "hello"))

with-如果您想打开文件并在完成后关闭它,标准库中没有宏。(警告:直接在浏览器中输入。)

(save-excursion
  (let (buf)
    (unwind-protect
      (progn
        (setq buf (find-file-noselect "filename"))
        (when buf
          (goto-char 42)
          (insert "hello")))
      (if buf (kill-buffer buf))))

相关内容