VIM创建常用的代码模板

之前在vim上尝试在过插件,一句话,很麻烦,很多问题,如果怕麻烦或者没有太多空闲时间,建议不要用,太浪费时间了.

如果你经常写c/c++ 代码的话会经常有一些固定的模板要多次写如,比如模板类,要写好多的template <class T>,如果你用Sublime写的话可能会快些,他会把之前写过的字符串进行动态匹配,但是对于VIM就不行.当然你可以ctrl+n或者ctrl +p来匹配之前写过的,但是如果要匹配多行的信息可能你就不知道怎么办了(不嫌麻烦可以多次yy),所以我今天介绍我一天的成果,不用下载下件,不用你会vimsrcipt,可以轻松想在sublime中一样编写方便快捷.sublime可以自定义快捷键生成模板


先介绍功能:(注意:这些自定义命令在编辑是输入即插入模式输入的,并且输入的要快,快,快,说三遍了啊)

1.括号的自动匹配生成(vim只能写一个,而sublime可以在写了左括号后自动匹配右括号)

  自动匹配并且光标在括号中间(此处可以匹配小,中,大三种括号)

2.生成/**/

3.输入#def  生成#define

4.输入#in 生成#include<>光标在括号之间

5.输入np 生成using namespace std;

6.输入nf生成头文件定义模板

                    #ifndef  xxxx

                    #define xxxx

                    //代码段

                    #endif

7.按ctrl+A 全选,ctrl+c复制,ctrl+v粘贴,这里不建议用后两个,建议用y和p

8.输入class生成      输入st和空格生成        输入tp和空格生成

        class ClassName{                                struct | {                                                                   template <class T>

           };//默认选中类名方便更改             };//光标默认在红色竖线处


9.输入if ,ife,while,do,switch,try,mian都会生成对应模板

   

10.输入fn 和空格会生成函数声明信息注解方便作者书写

11.ctrl + R会编译运行c,c++,java,python文件


代码教程:          

        在vim的匹配中除了插件外,一般有ctrl+p,ctrl+n 或者字典匹配ctrl+x ctrl+k等,这里可以自行百度

http://haoxiang.org/2011/09/vim-modes-and-mappin/,这个比较详细

在vim中也可以写vimsrcipt脚本,这里我介绍一下map命令,网上的解释很多,我就不赘述了.我就简单解释一下代码中的语法.


map a  b  意思是在命令模式下按a的效果与b的效果相同

    举个栗子:map a  :!ls 按a就会显示当前目录下的文件列表

inoremap 是插入模式在非递归map,就是在插入模式下可以讲文本当命令用

 举个栗子:inoremap a hello 意思是在输入时输入a就会被替换为hello,

                            inoremap a <ESC>:ls 按a就会显示当前目录下的文件列表

看到这你应该就明白其实就是给命令在不同模式下起个名字

             

代码:你可以将下列代码复制到当前用户下的 .vimrc文件中,也可以直接写在/etc/vim/vimrc文件中

"user design start
inoremap (  ()<ESC>i
inoremap [  []<ESC>i
inoremap {  {}<ESC>i
inoremap<>  <><ESC>i

inoremap /* /**/<ESC>hi
inoremap #def #define 
inoremap #in #include <><ESC>i
inoremap np<Space> using namespace std;<CR>
inoremap nf #ifndef<CR>#define<CR><CR>#endif<ESC>3kea


map <C-A> <ESC>ggVG
"map <C-C> y
"map <C-V> p


inoremap class class ClassName {<CR>};<ESC>kE2lve
inoremap st<Space> struct {<CR>};<ESC>kEla
inoremap tp<Space> template <class T><CR>

inoremap if if () {<CR><CR>}//endif<ESC>02k2ei
inoremap ife if () {<CR><CR>} else {}<ESC>02k2ei
inoremap while while(){<CR><CR>}//endwhile<ESC>2khi
inoremap do do{<CR><CR>}while();<ESC>0ki<Tab>
inoremap try try{<CR><CR>}catch(){<CR>}<ESC>2ki<Tab>
inoremap for for(int i = 0;i < len; ++i){<CR><CR>}//endfor<ESC>2k10lve
inoremap switch switch(){<CR>case:break;<CR>case:break;<CR>default:break;<CR>}//endswitch<ESC>4kehi


inoremap main int main(int argc, char* argv[]){<CR><CR>return 0;<CR>}<ESC>2ki<Tab>
inoremap fn<Space> /*<CR><Tab>Describe:<CR><ESC>0i<Tab>Result:<CR><ESC>0i<Tab>Parameters: TypeName: Meaning<CR><Tab>arg:<CR><ESC>0i*/<ESC>4kEa
"user design strat


"compile star
function CompileRunGcc()
exec "w"
if &filetype == 'c'
exec "!gcc % -o %<"
exec "!./%<"
elseif &filetype == 'cpp'
exec "!g++ % -o %<"
exec "!./%<"
elseif &filetype == 'java'
exec "!javac %"
exec "!java %<"
elseif &filetype == 'python'
exec "!python %"
endif
endfunction
map <C-R> :call CompileRunGcc()<CR>
"compile end

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

siyan985

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值