我的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))
有什么想法吗?
答案 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)
。