Emacs 在创建文件的时候,自动添加 template 的内容

有的时候,我们创建一个文件的时候,经常有一些要一次 一次重复输入的东西

例如我在创建一个 perl 文件的时候 总是要写

#!/usr/local/bin/perl -w
我在创建一个 py 文件的时候 总是要写
#!/usr/local/bin/python

template.el 的很好,但我用不到那么多的功能,

现在有个办法

(define-auto-insert 'cperl-mode  "perl.tpl" )
(define-auto-insert 'sh-mode '(nil "#!/bin/bash\n\n"))


(add-hook 'find-file-hooks 'auto-insert)

emacs 会问是否应用 perl.tpl , 回答 y 如果想 emacs 不那么罗 嗦, auto-insert-query 可以控制,如果你一不小心回答了 n ,那 么可以用 M-x auto-insert 添加 template 内容。具体查看 info autotype

;; 自动为 C/C++ 的头文件添加 #define 保护。
(define-auto-insert
  '("\\.\\([Hh]\\|hh\\|hxx\\|hpp\\)\\'" . "C / C++ header")
  '((upcase (concat "_"
                    (replace-regexp-in-string
                     "[^a-zA-Z0-9]" "_"
                     (format "%s_%d_" (file-name-nondirectory buffer-file-name) (random)))))
    "#ifndef " str \n
    "#define " str "\n\n"
    _ "\n\n#endif"))