今天给大家推荐一下 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/*.py
和tests/*.py
定义源文件和单元测试文件的行为dispatch
为vim-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
,创建/切换到对应的单元测试文件:
单元测试代码如下:
#!/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
,运行单个文件的单元测试(在源文件或者测试文件执行均可):
运行 Makefile
中的命令: