emacs:在函数中返回两行?

时间:2012-10-23 08:53:27

标签: emacs lisp

我的emacs点文件中有一个函数可以在我的日记中插入日期。添加它之后,我想跳回几行并将光标放在日期下面。我该如何在函数中执行此操作?

(defun ddd ()
  "Insert date at point journal style."
  (interactive)
  (insert (format-time-string "[%Y-%m-%d %a]"))
  (insert "\n")
  (insert "\n")
  (insert "\n")
  (insert "** end\n")
  (gobacktwolineshere))

有什么想法吗?

4 个答案:

答案 0 :(得分:10)

您需要功能forward-line,特别是

(forward-line -2)

向后退两行。有关详细信息,请在C-h f forward-line RET中键入emacs。根据您离开的位置,您可能不会在行的开头结束。如果您需要此功能,请添加对beginning-of-line的调用。

答案 1 :(得分:5)

请记住,如果您可以告诉Emacs以交互方式进行此操作(例如,在此实例中使用< up> Cp ),那么您可以向Emacs询问它的作用你输入 Ch k 作为前缀。

在这种情况下,Emacs告诉您这些键运行命令previous-line,并且还:

  

如果您打算在Lisp程序中使用它,请考虑使用   相反,forward-line带有否定参数。通常更容易   使用和更可靠(不依赖于目标栏等)。

答案 2 :(得分:2)

您可能希望使用save-excursion来使其更强大:

(defun ddd ()
  "Insert date at point journal style."
  (interactive)
  (insert (format-time-string "[%Y-%m-%d %a]\n"))
  (save-excursion (insert "\n\n** end\n")))

答案 3 :(得分:1)

如果您知道要返回的字符数,可以使用(backward-char 9)