我是emacs新手。我正在尝试扩展角色“。”用缩写表示“。”(带有两个空格的句号,以便更有效地结束emacs中的句子)。换句话说,当我输入“。”时接下来是一个空格,emacs放了一个“。”。
我已将下一个代码放在我的缩写文件中,但它不起作用。
(text-mode-abbrev-table)
"." 0 ". "
任何人都可以帮助我?
答案 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
安装它。
electric-dot
在数字后只插入一个点。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