0

比如我用elisp写一个函数时,经常把"(defun"打成"(defnu"。
出现错别字时,我能不能自动把"(defnu"替换成"(defun"?
我可以把替换"的定义写进去吗? (defnu" 与 "(defun" 挂钩?
谢谢!

4

3 回答 3

3

您可以为此使用缩写:http ://www.gnu.org/software/emacs/manual/html_node/emacs/Abbrevs.html

只需将拼写错误定义为缩写,以便将其替换为正确的版本。

于 2013-10-13T05:56:58.490 回答
2

关于 的问题defun,一个很好的方法是yasnippet

我只需键入dC-o(我已将其绑定为展开)。

这是它在 Elisp 缓冲区中扩展的内容:

# -*- mode: snippet -*-
# name: defun
# key: d
# --
(defun $1 ()
  $0)

在 Clojure 缓冲区中:

# -*- mode: snippet -*-
# name: defn
# key: d
# --
(defn $1 [$0]
)

在 Octave 缓冲区中:

# -*- mode: snippet -*-
# name: function
# key: d
# --
function $1 = $2($0)
endfunction

一次性消除多种语言的样板文件的麻烦。

于 2013-10-13T07:47:09.020 回答
1

有两种主要的处理方法:

  1. 您可以使用缩写代替全名。有多种方法可以做到这一点,包括 Emacs “缩写”(参见 @Tom 的回复)和dabbrev(参见 Emacs 手册, node Dynamic Abbrevs),甚至只是defaliasand defvaralias

  2. 有些人使用模糊匹配来弥补此类拼写错误(拼写错误、更改的字母顺序和一些缩写:缺少字母)。有几种模糊匹配,从简单的“分散”或“灵活”匹配(缺少字母,但顺序相同)到复杂的(例如,涉及邻近分数)。

于 2013-10-13T06:14:58.787 回答