【问题标题】:Elisp how to replace string automatially [duplicate]Elisp如何自动替换字符串[重复]
【发布时间】:2013-10-13 15:47:09
【问题描述】:

例如,当我在 elisp 中编写函数时,我经常将 "(defun" 键入为 "(defnu"。
出现拼写错误时,是否可以自动将“(defnu”替换为“(defun”)?
我可以把用“(defun”替换“(defnu”)的定义放在一个钩子里吗?
谢谢!

【问题讨论】:

标签: regex emacs replace elisp


【解决方案1】:

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

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

【讨论】:

  • 顺便说一句,使用 add-mode-abbrev,而不是 global-abbrev-table。否则,当不需要编辑缩写时,可能会出现令人惊讶的扩展。
【解决方案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

一次性解决多种语言的样板问题。

【讨论】:

    【解决方案3】:

    有两种主要的处理方法:

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

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

    【讨论】:

      猜你喜欢
      • 2013-05-18
      • 2013-06-23
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 2016-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多