vim-projectionist插件

今天给大家推荐一下 vim-projectionist 插件,它可以封装一些开发过程中常用的操作,提升工作效率.

这个插件配置很简单,大家可以先简单看一下 官方教程,然后看我写的python项目配置.

依赖

后面的功能依赖 vim-dispatch 插件,以后会写文章来讲解(强烈推荐).

项目结构

.
├── .projections.json
├── Makefile
├── py_projectionist
│   ├── __init__.py
│   ├── mod_a
│   │   └── __init__.py
│   └── mod_b
│       └── __init__.py
└── tests
    ├── __init__.py
    └── mod_a
        └── __init__.py
  • .projectionist.json: vim-projectionist 针对当前项目的配置文件
  • Makefile: 里面封装了单元测试、代码风格检查等
  • py_projectionist: 项目源码
  • tests: 单元测试

.projectionist.json

{
    "py_projectionist/*.py": { "dispatch": "PYTHONPATH={project} python tests/{dirname}/test_{basename}.py", "alternate": "tests/{dirname}/test_{basename}.py", "make": "make -f Makefile" },
    "tests/*.py": { "dispatch": "PYTHONPATH={project} python {file}", "make": "make -f Makefile", "template": [ "#!/usr/bin/env python", "# -*- coding: utf-8 -*-", "# {}测试代码模板..." ] } }

解释一下

  • py_projectionist/*.pytests/*.py 定义源文件和单元测试文件的行为
  • dispatchvim-dispatch 插件设置默认操作,上面的两个 dispatch 都被配置成运行相应文件的单元测试
  • alternate 配置与当前文件关联的文件(例如.c.h,源文件与单元测试等)
  • make 执行我们 Makefile 中定义的功能
  • template 创建文件时,自动插入的模板

开发演示

cd py_projectionist/mod_a
vim mod_a.py

文件内容如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def add(x, y):
    return x + y

命令模式下输入: :A,创建/切换到对应的单元测试文件:

vim-projectionist插件_第1张图片

单元测试代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from py_projectionist.mod_a import mod_a
import unittest

class ModATest(unittest.TestCase):
    def test_add_int(self):
        self.assertEqual(mod_a.add(1, 2), 3)

    def test_add_float(self):
        self.assertEqual(mod_a.add(1.0, 2), 3.0)

if __name__ == '__main__':
    unittest.main()

在命令模式下输入 :Dispatch,运行单个文件的单元测试(在源文件或者测试文件执行均可):

vim-projectionist插件_第2张图片

运行 Makefile 中的命令:

vim-projectionist插件_第3张图片

参考资料

  • FILE TEMPLATES WITH ULTISNIPS AND PROJECTIONIST
  • VIC RAMON’S EMBER TUTORIAL
  • chantastic/.projections.json
  • vicramon/projections.json

前往独立博客阅读

你可能感兴趣的:(python,vim)