如何添加为 C++ 生成类源文件和头文件的 vim 命令?

Sai*_*idi 3 c++ linux vim bash

当我:Class TotoVIM 命令行键入时,我想获取标头和源文件及其模板,就像我们创建新类时任何编辑器所做的那样。因此,如果

输入 :Class Toto

然后

输出

toto.h

#ifndef TOTO_H
#define TOTO_H

class toto
{
    public:
        toto();
        virtual ~toto();
    protected:
    private:
};

#endif // TOTO_H
Run Code Online (Sandbox Code Playgroud)

toto.cpp

#include "toto.h"

toto::toto()
{
    //ctor
}


toto::~toto()
{
    //dtor
}
Run Code Online (Sandbox Code Playgroud)

我得到:

./src/toto.c

./include/toto.h

自动生成(带srcinclude文件夹就完美了)

Sai*_*idi 5

在函数下方,我添加到我的~/.vimrc文件中

 "C++ Class Generator                                                                                                    
 function! Class(ClassName)                                                                                              
    "==================  editing header file =====================                                                       
     let header = a:ClassName.".h"                                                                                                                                                                                                                                                                                        
     :vsp %:h/.h                                                                                                                                                                                                                             
     call append(0,"#ifndef ".toupper(a:ClassName)."_H")                                                                 
     call append(1,"#define ".toupper(a:ClassName)."_H")                                                           
     call append(2," ")                                                                                                  
     call append(3,"class ".a:ClassName )                                                                                
     call append(4, "{")                                                                                                 
     call append(5, "   public:")                                                                                        
     call append(6, "      ".a:ClassName."();")                                                                          
     call append(7, "      virtual ~".a:ClassName."();")                                                                 
     call append(8, "   protected:")                                                                                     
     call append(9, "   private:")                                                                                       
     call append(10, "};")                                                                                               
     call append(11,"#endif // ".toupper(a:ClassName)."_H")                                                              
     :execute 'write' header                                                                                             
   "================== editing source file ========================                                                      
     let src    = a:ClassName.".cpp"                                                                                     
     :vsp %:h/.cpp                                                                                                                                                                                                                     
     call append(0,"#include ".a:ClassName.".h")                                                                          
     call append(1," ")                                                                                                   
     call append(2,a:ClassName."::".a:ClassName."()")                                                                           
     call append(3,"{")                                                                                                   
     call append(4,"//ctor ")                                                                                             
     call append(5,"}")                                                                                                   
     call append(6," ")                                                                                                   
     call append(7," ")                                                                                                   
     call append(8,a:ClassName."::~".a:ClassName."()")                                                                         
     call append(9,"{")                                                                                                   
     call append(10,"//dtor ")                                                                                            
     call append(11,"}")                                                                                                  
     :execute 'write' src
endfunction    
Run Code Online (Sandbox Code Playgroud)

打开vim并输入:call Class("toto")

你的 vim 将被分成 3 部分:

  1. 你当前的文件
  2. toto.h
  3. 带有上述模板的 toto.cpp

如果您想自定义命令:call Class("toto"):Class toto 在您的~/.vimrc

command! -nargs=1 Class call Class(<f-args>) 
Run Code Online (Sandbox Code Playgroud)

结果 :

在此处输入图片说明