emacs 中使用模板文件

本文

主要介绍用emacs auto-insert命令实现用模板文件创建新文件。

版本 说明
0.1 初版发布
0.2 添加两个函数

背景

  • 主机: Thinkpad S2
  • 系统: Deepin GNU/Linux 15.11
  • 内核: Debian 6.3.0-18+deb9u1
  • emacs版本:Linux GNU Emacs 26.3

参考

创建模板文件

在.emacs.d目录下新建文件夹 templates,并创建verilog模板文件 templates.v,内容如下(文件名、路径、内容均可根据个人喜好进行定义,这里只是举例说明):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//-------------------------------------------------------------------------
// Title         :
// Project       :
//-------------------------------------------------------------------------
// File name     :
// Author        :
// Created       :
// Last modified :
//-------------------------------------------------------------------------
// Description   :
//
// This block does the following operations:
//   -
//   -
//-------------------------------------------------------------------------
//   This file is a confidential and proprietary property of XXX and the
// possession or use of this requires a written license from XXX.
//
//   Copyright (c) 2020 XXX Technology Co., Ltd. ALL rights reserved.
//-------------------------------------------------------------------------

module xx(/*AUTOARG*/);

/*AUTOWIRE*/
/*AUTOREG*/

endmodule

修改配置文件

我们创建了模板文件,还需要在配置文件中进行配置,打开.emacs或.emacs.d/init.el,添加以下内容(除了verilog文件模板,我还添加了shell等其他模板,不再一一说明):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
;;about template file
;;----------------------------------------------------
(auto-insert-mode)           ;; Adds hook to find-files-hook
(setq auto-insert-directory "~/.emacs.d/templates/")
(setq auto-insert-query nil) ;; If you don't want to be prompted before insertion
(setq auto-insert-alist
      (append '((verilog-mode . "template.v")
                (python-mode . "template.py")
                (c-mode . "template.c")
                (shell-mode . "template.sh")
                )
              auto-insert-alist))
;;----------------------------------------------------

添加两个函数

插入当前时间

将下面代码添加到.emacs或.emacs.d/init.el文件,需要插入当前时间时, M-x now 即可。

1
2
3
4
5
(defvar current-date-time-format "%Y/%m/%d %H:%S")
(defun now ()
  (interactive)
  (insert (format-time-string current-date-time-format (current-time)))
  )

插入当前文件名

将下面代码添加到.emacs或.emacs.d/init.el文件,需要插入当前文件名时, M-x name 即可。

1
2
3
4
(defun name ()
  (interactive)
  (insert (file-name-nondirectory buffer-file-name))
  )

文章原创,可能存在部分错误,欢迎指正,联系邮箱 cao_arvin@163.com。