【发布时间】:2013-10-13 15:47:09
【问题描述】:
例如,当我在 elisp 中编写函数时,我经常将 "(defun" 键入为 "(defnu"。
出现拼写错误时,是否可以自动将“(defnu”替换为“(defun”)?
我可以把用“(defun”替换“(defnu”)的定义放在一个钩子里吗?
谢谢!
【问题讨论】:
-
见post
例如,当我在 elisp 中编写函数时,我经常将 "(defun" 键入为 "(defnu"。
出现拼写错误时,是否可以自动将“(defnu”替换为“(defun”)?
我可以把用“(defun”替换“(defnu”)的定义放在一个钩子里吗?
谢谢!
【问题讨论】:
您可以使用缩写:http://www.gnu.org/software/emacs/manual/html_node/emacs/Abbrevs.html
只需将拼写错误定义为缩写,以便将其替换为正确的版本。
【讨论】:
关于defun 的问题,yasnippet 是一个很好的解决方法。
我只需输入d 和 C-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
一次性解决多种语言的样板问题。
【讨论】:
有两种主要的处理方法:
您可以使用缩写代替全名。有多种方法可以做到这一点,包括 Emacs “abbrevs”(参见 @Tom 的回复)和 dabbrev(参见 Emacs 手册,节点 Dynamic Abbrevs),甚至只是 defalias 和 defvaralias。
有些人使用 模糊匹配 来弥补此类拼写错误(拼写错误、更改字母顺序和一些缩写:缺少字母)。有几种kinds 的模糊匹配,从简单的“分散”或“弹性”匹配(缺少字母,但顺序相同)到复杂(例如,涉及邻近分数)。
【讨论】: