vim-projectionist插件

来源:互联网 发布:重庆cnc编程最新招聘 编辑:程序博客网 时间:2024/06/05 20:28

今天给大家推荐一下 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_avim mod_a.py

文件内容如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-def add(x, y):    return x + y

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

alternate.gif

单元测试代码如下:

#!/usr/bin/env python# -*- coding: utf-8 -*-from py_projectionist.mod_a import mod_aimport unittestclass 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,运行单个文件的单元测试(在源文件或者测试文件执行均可):

single_unittest.gif

运行 Makefile 中的命令:

makefile_command.gif

参考资料

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

前往独立博客阅读

0 0
原创粉丝点击