vim动态生成代码模板

标签 vim vim-macros

我必须编写包含重复代码的测试用例。

  1. 方法名应该是ClassName,用_ ex: class_name_test分隔
  2. 对象名称应为 classNameObj,模拟方法应采用 ClassName.class
  3. genericObj.call 语句对所有方法都是通用的 sayHello 应该绑定(bind)到 classNameObj,剩下的结果是 common
  4. commonMethods 对所有对象都是通用的

与复制粘贴和更改 ClassName 和 classNameObj 不同,我有兴趣使用 Vim 自动执行此操作。是否可以执行此操作,如果我将类名传递给它,应该生成其余部分?

方法模板如下。

@Test
public void stop_video_request_valid_data() throws Throwable {
    ClassName classNameObj = mock(ClassName.class);
    when(genericObj.call()).thenReturn(new Object[]{classNameObj});
    when(classNameObj.sayHello()).thenReturn("Hello");
    commonMethods();
}

最佳答案

snippets 就像类固醇的内置 :abbreviate,通常在其中包含参数插入、镜像和多个停止。第一个非常有名(并且仍然被广泛使用)的 Vim 插件是 snipMate (灵感来自 TextMate 编辑器);不幸的是,它不再被维护;虽然有 a fork .一个现代的替代方案(虽然需要 Python)是 UltiSnips .还有更多,见this list on the Vim Tips Wiki .

评价三点:一是snippet engine本身的特性,二是作者或他人提供的snippet的质量和广度;第三,添加新片段有多容易。

关于vim动态生成代码模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45304604/

相关文章:

macos - 如何在Vim中存储Golang模板宏

创建宏时 VIM 映射无法正常工作

vim - 在 Vim 中,如何将宏应用于一组行?

python - Vim 编辑器->clang_complete : no python support available

vim - 在vim中如何将 "save"映射到ctrl-s

debugging - 如何逐步执行vim宏(如调试)?

vim - 如何取消映射 vim 上的插入键?

performance - Vim 在处理 LaTeX 文件时运行缓慢

macos - Mac 上的 Vim python3 集成

vim - 从一个寄存器复制到另一个寄存器