Linux下VIM编辑器自动脚本

版权声明:转发注明出处,共同学习共同进步,感谢支持。 https://blog.csdn.net/AMDDMA/article/details/84201971

前言: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 <stdio.h>")
		call append(line(".")+14,"#include <stdlib.h>")
		call append(line(".")+15,"#include <string.h>")
		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 ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR>
:inoremap { {<CR>}<ESC>O
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap " ""<ESC>i
:inoremap ' ''<ESC>i
function! ClosePair(char)
if getline('.')[col('.') - 1] == a:char
            return "\<Right>"
else
            return a:char
endif
endfunction
filetype plugin indent on 
set completeopt=longest,menu

猜你喜欢

转载自blog.csdn.net/AMDDMA/article/details/84201971