所以我重新开始尝试学习编程。
我正在使用我的 MBP 使用 SSH 访问大学的 linux 机器,并使用 python 和 emacs 进行编程。
每个文件都需要有一个标题:
# File: file.py
# Author: My Name
# Date: 30 September 2014
# Section: 1
# Email: me@school.edu
# Description: sample header
我的问题是:
有没有办法让它成为一个永久模板,这样每当我创建一个新文件时,那些评论就已经存在了?除了文件日期和描述之外的所有内容都是静态的。如果有办法,是否还有一种方法可以自动填写更改 file.py = whateverINamedTheProgram.py 和 date = todaysDate 之类的东西?
最佳答案
header2.el 是要走的路,但是,这是学习一些 emacs lisp 并了解我们如何编写 emacs 使用脚本的机会。也许现在这是一个坏主意,因为你正在学习编程,但也许你会发现它更清晰(比不友好的 header2 和 yasnippet 文档)。
这段代码的优点是你按需调用它,我们可以做我们想做的。
(defun my-insert-header ()
"Asks for file name, date, description, ... and insert at point."
(interactive)
(setq cur-file (read-from-minibuffer "file name ? "
(file-name-nondirectory (buffer-file-name))))
(setq cur-date (org-read-date))
(setq cur-author "Me")
(setq cur-description (read-from-minibuffer "description ? "))
(insert (format "# File: %s \n" cur-file))
(insert (format "# date : %s \n" cur-date))
(insert (format "# Description : %s \n" cur-description))
)
将其放入您的点文件(.emacs.d/init.el 或 ~/.emacs)。
您可以尝试将其放入临时缓冲区,紧跟在最后一个括号之后并按 C-x C-e (eval-last-sexp)。 (参见本教程:http://wikemacs.org/wiki/Emacs_Lisp_in_15_minutes)
现在解释:
- defun:定义一个函数,如python中的def。
- (interactive):使用 Alt-x 调用函数。见http://ergoemacs.org/emacs/elisp_basics.html
- setq: 定义变量的方法
- read-from-minibuffer:做它说的:) 第二个参数是一个可选的默认文本来编辑
- org-read-date:来自 org-mode 的一个很好的实用函数。您可以使用 Shift-left/right 更改日期。它返回一个字符串。
- 缓冲区文件名:返回“/home/you/dir/try.py”
- 文件名非目录:返回“try.py”
- insert:在当前缓冲区插入文本
- format "foo %s\n": 字符串格式化,就像在 python 中一样
就是这样。我让你完成你想要的功能!
关于python - emacs 上自动 header 的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26132104/