Emacs的。 Abbreving“。”结束句子

时间:2013-07-25 18:30:12

标签: emacs symbols abbreviation

我是emacs新手。我正在尝试扩展角色“。”用缩写表示“。”(带有两个空格的句号,以便更有效地结束emacs中的句子)。换句话说,当我输入“。”时接下来是一个空格,emacs放了一个“。”。

我已将下一个代码放在我的缩写文件中,但它不起作用。

(text-mode-abbrev-table)                                    
"."            0    ".    " 

任何人都可以帮助我?

3 个答案:

答案 0 :(得分:1)

我不确定你为什么要这样,但是这里是:

将其放入~/.emacs

(defun electric-dot ()
  (interactive)
  (if (and (looking-back "\\w") (not (looking-back "[0-9]")))
      (progn
        (self-insert-command 1)
        (insert "  "))
    (self-insert-command 1)))

(defvar electric-dot-on-p nil)

(defun toggle-electric-dot ()
  (interactive)
  (global-set-key
   "."
   (if (setq electric-dot-on-p
             (not electric-dot-on-p))
       'electric-dot
     'self-insert-command)))

之后,使用 M-x toggle-electric-dot 使每个插入.,如果它在一个单词之后。 您可以再次调用它以恢复默认行为。

作为旁注,有很多很多更好的方法 提高文字输入速度,例如auto-complete-mode。 您可以使用package-install安装它。

UPD electric-dot在数字后只插入一个点。

UPD这里是electric-space而不是:

如果它回头看,这个会插入一个额外的空间 在一个单词后跟一个点。

(defun electric-space ()
  (interactive)
  (if (looking-back "\\w\\.")
      (insert " "))
  (self-insert-command 1))

(defvar electric-space-on-p nil)

(defun toggle-electric-space ()
  (interactive)
  (global-set-key
   " "
   (if (setq electric-space-on-p
             (not electric-space-on-p))
       'electric-space
     'self-insert-command)))

答案 1 :(得分:0)

安装按键和弦包。然后定义一个这样的。

(key-chord-define-global ". " ".  ")

键和弦接受更多种键然后缩写,因此“。”可能有用。但是这两个键必须连续按下(这不应该是一个问题)。

答案 2 :(得分:0)

你的缩写不起作用的原因是因为默认情况下,缩写名称只能由字元素字符组成(基本上是字母数字字符),而.不是这样的字符。您可以通过更改:regexp的{​​{1}}属性来规避此问题,但这确实不值得。相反,你可以做

text-mode-abbrev-table