Emacs 通过词的分界符(空格或标点等)判断输入的是否是一个缩写词。例如,当输入 f o o . 时,foo. 将自动被替换为串“find outer otter.”。当然,只有打开缩写子模式(M-x abbrev-mode)时,这些才有效。
缩写词的定义,可以在编辑的过程中完成。定义和内容保存在文件中,关闭子模式或 Emacs 不会丢失。缩写的定义分为全局的和模式相关的两种,可以同时有一个全局定义和几个不同模式的定义。
定义缩写
- C-x a g
- 定义一个全局缩写词,用光标前的一个或多个词作为内容,可以通过前缀参数指定词的个数;
- C-x a l
- 同上,但是当前模式下的;
- C-x a i g
- 和上面的命令相反,光标处的为全局缩写词,通过小缓冲输入内容;
- C-x a i l
- 同上,但是当前模式下的;
- M-x define-global-abbrev RET Abbrev RET Content RET
- 定义全局缩写词 Abbrev,内容为 Content;
- M-x define-mode-abbrev RET Abbrev RET Content RET
- 同上,当前模式下的缩写;
- M-x kill-all-abbrevs
- 删除所有缩写的定义;
先定义 region(通过设置 Mark),然后 C-u 0 C-x a g 可以将 region 作为缩写词的内容。
在编辑的过程中,如果先输入了缩写词,可以用命令 C-x a i g 为它输入内容。
命令 M-x define-global-abbrev 和 M-x define-mode-abbrev 直接定义一个全局缩写词,通过小缓冲分别输入缩写词和内容。
负的前缀参数用来删除,如 C-u - C-x a g foo RET 或 C-u - C-x a l foo RET 分别删除全局的和当前模式的 foo 定义。 M-x kill-all-abbrevs 删除所有缩写的定义,不论全局与否。
控制缩写的扩展
扩展缩写时的大小写比较有趣,会根据你的输入自动转换,例如:
- foo -> find outer otter
- Foo -> Find Outer Otter
- FOO -> FIND OUTER OTTER 如果 abbrev-all-caps 是 non-nil
- FOO -> Find Outer Otter 如果 abbrev-all-caps 是 nil
- M-'
- 用于扩展有前缀的缩写词。
- C-x a e
- 将位点之前的缩写扩展,即使在关闭缩写子模式时也有效。
- M-x expand-region-abbrevs
- 扩展 region 中所有缩写。
M-x expand-region-abbrevs 用来在 region 中搜索和替换所有缩写,在已经输入了文本,但忘了开启缩写子模式的时候比较有用。
没有评论:
发表评论