我在this question中有一个修改过的脚本版本,即
(defun now ()
(interactive)
(let ((daily-name (format-time-string "%y%m%d_%H%M%S")))
(find-file (format "/path/%s.org" daily-name))))
在我的.emacs
中,但我还希望在打开文件时在光标前插入一个字符串。我对Emacs Lisp完全不熟悉,所以我不知道如何做到这一点。我该怎么做?
谢谢!
答案 0 :(得分:0)
EmacsWiki上的页面Inserting Today's Date提供了各种方法来执行您的请求,从使用shell到使用Emacs日历并使用format-time-string
。
答案 1 :(得分:0)
我认为非常有用的emacs功能是“节奏”。它已存在多年,并且有各种其他包,例如ysnippets,它们可以做类似的事情。
基本上,tempo允许您定义可插入文件的模板。这些模板可以包含静态和动态内容。我使用速度模板在我的文件顶部插入一个标题,其中包含各种信息,包括创建日期和上次修改日期。通过使用其他emacs功能,每次保存文件时都会更新上次修改日期。这是我使用的。请注意,我绑定了tempo函数以将模板插入到f5中,因此当我创建新文件时,所有我要插入模板的操作都是f5。每当打开特定类型的新文件时,您也可以自动执行此操作以插入模板。
(require 'tempo)
(tempo-define-template "generic-header"
'((format "%s%s" comment-start comment-start)
" Filename: "
(file-name-nondirectory (buffer-file-name)) 'n
(format "%s%s" comment-start comment-start)
" Creation Date: "
(format-time-string "%A, %d %B %Y %I:%M %p %Z") 'n
(format "%s%s" comment-start comment-start)
" Last Modified: "
(format-time-string "%A, %d %B %Y %I:%M %p %Z") 'n
(format "%s%s" comment-start comment-start)
" Author: Tim Cross <theophilusx AT gmail.com>"
'n
(format "%s%s" comment-start comment-start)
" Description:" 'n
(format "%s%s" comment-start comment-start) 'n
'n))
;;; Lets setup some key bindings.
(global-set-key [(f5)] 'tempo-template-generic-header)
(provide 'tx-template)
这里是更新时间戳的位
(add-hook 'write-file-hooks 'time-stamp)
(setq time-stamp-active t)
(setq time-stamp-format "%:a, %02d %:b %:y %02I:%02M %#P %Z")
(setq time-stamp-start "\\(Time-stamp:[ ]+\\\\?[\"<]+\\|Last Modified:[
]\\)")
(setq time-stamp-end "\\\\?[\">]\\|$")
(setq time-stamp-line-limit 10)
(provide 'tx-timestamp)
答案 2 :(得分:0)
库header2.el
允许您(可选)在打开新文件时自动插入文件头。您可以自定义标题中的内容。您可以选择的预定义字段(您也可以轻松定义自己的字段)包括带时间戳的字段(您可以为其定义所需的时间/日期格式)。
除了在新文件中插入标题外,该库还可以自动更新您选择的标题字段 - 特别是上次修改的时间/日期字段。
Emacs Wiki和MELPA提供了header2.el
个包。