Emacs:在标题中打开包含日期的文件,插入文本

时间:2015-02-05 00:49:55

标签: emacs

我在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完全不熟悉,所以我不知道如何做到这一点。我该怎么做?

谢谢!

3 个答案:

答案 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 WikiMELPA提供了header2.el个包。