python - emacs 上自动 header 的模板

标签 python emacs

所以我重新开始尝试学习编程。

我正在使用我的 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/

相关文章:

python - 在以下Python代码场景中使用kwargs是否正确?

emacs - 更改后重新加载 .emacs 的键绑定(bind)?

Python 请求 - 使用 multipart/form-data 发布一个 zip 文件

python - 如何在 django rest 框架中保存嵌套关系?

python - Selenium webdriver 无法找到该元素。错误 - 消息 : element not visible

python - SML 是否与 Python 的 range() 类似?

java - 如何在 emacs 中运行 Java 代码?

Emacs ido-模式并在目录中创建新文件,当我打字时它会不断更改目录

emacs - 如何为特定缓冲区本地设置缓冲区face属性?

emacs - &rest 在 elisp 中是什么意思?