大家都知道,写 Markdown 文档时可以使用代码区块(Code Blocks)。给代码片段指定语言类型,就有漂亮的语法高亮效果。那有没有想过,直接在代码区块中写 Python 代码呢?

这个事情还真可以做到,方法是使用 Neovim + ncm。ncm 全称 “nvim-completion-manager”,是针对 Neovim 编辑器的一款异步补全框架(插件)。笔者从 Vim 转到 Neovim ,重新搜寻补全插件的过程中,经过与 deoplete [1] 的比较,迅速入了 ncm 的坑。;-)

[1] 另一款异步补全插件,由 Vim 大神 Shougo 开发。

从上图中可以看到 ncm 的一项特色功能: ScopingScoping 允许你直接在某 作用域(Scope) 内补全 Python、JavaScript、Go……等等,即 ncm 框架下的所有语言。笔者接触到 ncm 时已有 Markdown 支持,两天前寻思增加 reStructuredText 应该也不会太难,就尝试着提了个 issue 请求。结果 ncm 作者反应异常迅速,当天就增加了对 reStructuredText 代码区块的支持。考虑到大部分受众恐怕还在使用 Markdown,上图录屏中仍采用了 Markdown 文档来做示范,以让读者有最直观的感受。

Scoping 的另一个使用场景:编写 HTML 时在 script 标签中补全 JavaScript 代码,在 style 标签中补全 CSS 代码。这个也是 ncm 开箱支持的,有没有感觉很贴心? :) 最后的最后, ncm 作者是中国人,童鞋们可以去点赞了。