前言

今天要来介绍一下 Snippet ,也就是代码片段。

它可以快速插入常用的、复杂的具有一定规律的模板代码,提高编写效率。

yasnippet

Emacs 中使用 Snippet 需要安装 yasnippet 这个插件。

use-package 包管理器为例,可使用如下代码进行安装

1
2
(use-package yasnippet
  :hook ((prog-mode org-mode) . yas-minor-mode))

上面的代码在 prog-modeorg-mode 中会启用 yasnippet 功能,这时可以 TAB 展开代码片段。

当然也可以全局启用

1
(yas-global-mode 1)

第三方模板

安装好了还不能使用,因为这时候缺少模板。

不过好在有一个三方库AndreaCrotti/yasnippet-snippets: a collection of yasnippet snippets for many languages帮我们做了编写模板的工作。

这个库里有大量的模板,包含常见的语言,我大概数了一下有 100 多种语言。

要使用这个模板也是非常简单,只需要安装就行了

1
(use-package yasnippet-snippets)

使用

我们以 Python 为例,新建一个 test.py ,里面只输入 np ,如下所示

1
np

然后按下 TAB 就会展开 snippet 中的代码,展开后如下所示

1
import numpy as np

再来一个好玩一点的,我们以导入包为例

Python 中导入包里的模块使用 from xxx import xxx

Emacs 中只需要输入 from ,然后你只需要输入包和要导入的模块即可。

光标会在 fromimport 之间跳转,这样你就只需要输入包和模块就行了。

这些关键字都可以在AndreaCrotti/yasnippet-snippets: a collection of yasnippet snippets for many languages这个仓库的 snippets/对应语言 这个目录下找到。

总结

Snippet 对我们提高编码效率作用还是很大的,熟练之后用起来非常方便。

下一次讲一下如何自定义 Snippet ,因为别人写的并不一定能满足我们的需要。

完整配置

1
2
3
(use-package yasnippet
  :hook ((prog-mode org-mode) . yas-minor-mode))
(use-package yasnippet-snippets)

参考