3

我的 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

4 回答 4

10

你想要这个功能forward-line,特别是

(forward-line -2)

向后退两行。有关更多信息,请键入C-h f forward-line RETinside emacs。根据您离开的位置,您可能不会在行首结束。如果你想要这个,添加对beginning-of-line.

于 2012-10-23T08:59:17.180 回答
5

请记住,如果您可以告诉 Emacs 以交互方式执行此操作(例如,使用<up>C-p在此实例中),那么您可以通过前缀 . 来询问 Emacs 在您键入时它会做什么C-hk

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

如果您正在考虑在 Lisp 程序中使用它,请考虑使用 forward-line否定参数。它通常更易于使用且更可靠(不依赖于目标列等)。

于 2012-10-23T11:18:07.257 回答
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")))
于 2012-10-23T13:09:10.383 回答
1

如果您知道要返回多少个字符,则可以使用(backward-char 9).

于 2012-10-23T08:55:51.110 回答