我倾向于依赖vim而不是完整的IDE来处理项目,我发现自己定期做的一件事就是创建一个带有派生值的新文件。
例如,创建新的c ++类涉及创建.hpp
文件和.cpp
文件,添加文件注释,许可证,作者,ctor / dtor,复制,分配,移动等...
class %Object% {
public:
explicit %Object%() = default;
~%Object%() = default;
%Object%(%Object%&& rhs) = default;
%Object%(const %Object%& rhs) = default;
%Object%& operator=(%Object%&& rhs) = default;
%Object%& operator=(const %Object%& rhs) = default;
protected:
private:
}
#include "%Object%.hpp"
另一个例子是c。
中的.h
和.c
文件
我对UltiSnips和muTemplate有点熟悉,这两者似乎都在很大程度上削减了样板。但是,我不清楚是否有办法在文件范围之外使用这些或其他东西。我写了一个非常快速和肮脏的bash scripts来做这件事,我准备在python中重新实现它,但我宁愿使用现有的插件。
有没有办法用UltiSnips,muTemplate或其他方法做到这一点?如果没有,是否有一种扩展现有插件的好方法?
答案 0 :(得分:1)
Discl。我是mu-template和lh-cpp的维护者。不幸的是,我现在只是看到你的问题 - 我会说你不应该犹豫要不要给我发电子邮件/问题/ ......我不确定问题是否仍然存在。我甚至不确定是否已经完全掌握了你想要的东西。
自您尝试过的版本以来,我在lh-cpp中添加了许多模板/片段/向导来生成classes according to their semantics。你现在可以:
value-class
,base-class
等请注意,C ++文件的c ++模板也可以高度自定义 - 基于每个项目。 Usual licence texts已准备就绪。新的C ++文件知道如何包含其关联的头文件(如果检测到)。
答案 1 :(得分:0)
将其添加到您的某个启动文件中:
" Function to substitute the class names in a file
function! SubstituteClassName()
execute "1,$s/%Object%/" . expand("%:t:r") . "/g"
endfunction
" Function to create the skeleton of a header file
function! CreateHeaderFile()
1
insert
#pragma once
#ifndef %Object%_H
#define %Object%_H
class %Object% {
public:
explicit %Object%() = default;
~%Object%() = default;
%Object%(%Object%&& rhs) = default;
%Object%(const %Object%& rhs) = default;
%Object%& operator=(%Object%&& rhs) = default;
%Object%& operator=(const %Object%& rhs) = default;
protected:
private:
}
.
call SubstituteClassName()
endfunction
" Function to create the skeleton of a source file
function! CreateSourceFile()
1
insert
#include "%Object%.hpp"
.
call SubstituteClassName()
endfunction
function! CreateClassFiles(name)
" Open the header file.
execute "edit " . a:name . ".hpp"
" Create the skeleton of the header file
call CreateHeaderFile()
" Write the file
wa
" Open the source file.
execute "edit " . a:name . ".cpp"
" Create the skeleton of the header file
call CreateSourceFile()
" Write the file
wa
endfunction
现在您可以使用
创建骨架.hpp和.cpp文件call CreateClassFiles("myclassname")