前言:VIM自动脚本是在创建C、H、ASM、SH等文件时,自动填写内容到文件中的工具,其语法规则描述如:
官网描述:https://www.vim.org/
前人总结铺路:https://blog.csdn.net/yz457694/article/details/77316421
一、脚本作用范围:
脚本放置在当前用户目录下,文件名为:.vimrc,一般为不可见配置文件,且只对VIM编辑器有效;
VI编辑器目前不支持vim有些指令,如:set mouse=a(目前在Ubuntu16(Linux4.4.0)上vi已支持vim自动脚本)
二、自动脚本示例:
set nu "显示行数
set mouse=a "鼠标控制生效
set tabstop=4 "Tab键为4个空格长度
filetype indent plugin on "依据文件类型动态配置
set softtabstop=4
set shiftwidth=4
set ruler
set showcmd
set completeopt=preview,menu
"新建不同后缀文件时,依据以下函数自动在新建文件中填充内容,如:注释、文件头等
autocmd BufNewFile *.c exec ":call Set_C_Files()"
autocmd BufNewFile *.h exec ":call Set_H_Files()"
autocmd BufNewFile *.asm exec ":call Set_ASM_Files()"
autocmd BufNewFile *.sh exec ":call Set_SHELL_Files()"
"func中使用到的变量
let $author_name = "Your Name" "文件中添加作者名
let $author_email = "Your Email" "文件中添加作者邮箱
"当新建一个*.C文件时执行以下自动补全函数
func Set_C_Files()
call setline(1,"/*******************************************************")
call append(line("."), "* 文件作者: ".$author_name)
call append(line(".")+1, "* 邮件地址: ".$author_email)
call append(line(".")+2, "* 文件名称: ".expand("%"))
call append(line(".")+3, "* 创建时间: ".strftime("%c"))
call append(line(".")+4, "* 模块描述:")
call append(line(".")+5, "* ")
call append(line(".")+6, "* LICENSE:")
call append(line(".")+7, "* 修改历史:")
call append(line(".")+8, "* 版本 修改时间 修改人 修改内容")
call append(line(".")+9, "* -----------------------------------------------------")
call append(line(".")+10,"* V0.1 ".strftime("%F")." ".$author_name." 创建初版")
call append(line(".")+11,"*******************************************************/")
call append(line(".")+12,"")
call append(line(".")+13,"#include ")
call append(line(".")+14,"#include ")
call append(line(".")+15,"#include ")
call append(line(".")+16,"")
call append(line(".")+17,"")
call append(line(".")+18,"int main(int argc,char *argv[])")
call append(line(".")+19,"{")
call append(line(".")+20,"")
call append(line(".")+21," return 0;")
call append(line(".")+22,"}")
call append(line(".")+23,"")
call append(line(".")+24,"/* END Of File '".expand("%")." */")
call append(line(".")+25,"")
endfun
func Set_H_Files()
call setline(1,"/*******************************************************")
call append(line("."), "* 文件作者: ".$author_name)
call append(line(".")+1, "* 邮件地址: ".$author_email)
call append(line(".")+2, "* 文件名称: ".expand("%"))
call append(line(".")+3, "* 创建时间: ".strftime("%c"))
call append(line(".")+4, "* 模块描述:")
call append(line(".")+5, "* ")
call append(line(".")+6, "* LICENSE :")
call append(line(".")+7, "* 修改历史:")
call append(line(".")+8, "* 版本 修改时间 修改人 修改内容")
call append(line(".")+9, "* -----------------------------------------------------")
call append(line(".")+10,"* V0.1 ".strftime("%F")." ".$author_name." 创建初版")
call append(line(".")+11,"*******************************************************/")
call append(line(".")+12,"")
call append(line(".")+13,"#ifndef _".toupper(expand("%:r"))."_H")
call append(line(".")+14,"#define _".toupper(expand("%:r"))."_H")
call append(line(".")+15,"")
call append(line(".")+16,"")
call append(line(".")+17,"")
call append(line(".")+18,"")
call append(line(".")+19,"")
call append(line(".")+20,"")
call append(line(".")+21,"#endif /* END Of _".toupper(expand("%:r"))."_H */")
call append(line(".")+22,"")
endfun
func Set_ASM_Files()
call setline(1,";*******************************************************")
call append(line("."), ";* 文件作者: ".$author_name)
call append(line(".")+1, ";* 邮件地址: ".$author_email)
call append(line(".")+2, ";* 文件名称: ".expand("%"))
call append(line(".")+3, ";* 创建时间: ".strftime("%c"))
call append(line(".")+4, ";* 模块描述:")
call append(line(".")+5, ";* ")
call append(line(".")+6, ";* LICENSE :")
call append(line(".")+7, ";* 修改历史:")
call append(line(".")+8, ";* 版本 修改时间 修改人 修改内容")
call append(line(".")+9, ";* -----------------------------------------------------")
call append(line(".")+10,";* V0.1 ".strftime("%F")." ".$author_name." 创建初版")
call append(line(".")+11,";******************************************************")
call append(line(".")+12,"")
call append(line(".")+13,"")
call append(line(".")+14,"")
call append(line(".")+15,"")
call append(line(".")+16,";/* END Of File '".expand("%")."' */")
call append(line(".")+17,"")
endfun
func Set_SHELL_Files()
call setline(1,"#!\\bin\\bash")
call append(line("."), "#######################################################")
call append(line(".")+1, "# 文件作者: ".$author_name)
call append(line(".")+2, "# 邮件地址: ".$author_email)
call append(line(".")+3, "# 文件名称: ".expand("%"))
call append(line(".")+4, "# 创建时间: ".strftime("%c"))
call append(line(".")+5, "# 模块描述:")
call append(line(".")+6, "# ")
call append(line(".")+7, "# LICENSE :")
call append(line(".")+8, "# 修改历史:")
call append(line(".")+9, "# 版本 修改时间 修改人 修改内容")
call append(line(".")+10,"# -----------------------------------------------------")
call append(line(".")+11,"# V0.1 ".strftime("%F")." ".$author_name." 创建初版")
call append(line(".")+12,"########################################################")
call append(line(".")+13,"")
call append(line(".")+14,"")
call append(line(".")+15,"")
call append(line(".")+16,"")
call append(line(".")+17,"")
call append(line(".")+18,"# /* END Of File '".expand("%")."' */")
call append(line(".")+19,"")
endfun
"符号自动补全
:inoremap ( ()i
:inoremap ) =ClosePair(')')
:inoremap { {}O
:inoremap } =ClosePair('}')
:inoremap [ []i
:inoremap ] =ClosePair(']')
:inoremap " ""i
:inoremap ' ''i
function! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
return "\"
else
return a:char
endif
endfunction
filetype plugin indent on
set completeopt=longest,menu