最近迷上了vim,喜欢它完全是由于它强大的自定义配置功能,为了更好的使用,最近查了很多资料和帮助文档,专注于写配置。
这是一个新建的文件时自动创建模板的功能,看了很多网上的教程,感觉那些对于模板修改不是很友好,每次修改都需要添加重复的代码。于是就有了调用外置模板的想法,这样一来就可以减少对配置文件的频繁修改了。
废话不多说,直接上代码了
####### 文件操作 ########
"
"新建文件添加模板
autocmd BufNewFile *.html,*.htm,*.py,*.sh exec "call UseTemp()"
"自定义函数UseTemp
func UseTemp()
"使用if语句判断文件类型
if &filetype=="htm"||&filetype=="html"
"使用寄存器添加模板
0r ~/storage/documents/termux/vim_files/template/web/demo.html
elseif &filetype=="python"
"定义列表
let lnlist=["\#!/usr/bin/python3","\#coding=utf-8"]
"调用setline函数将列表中的元素逐个加入行,列表中每个元素会被分别加入到行内
call setline(".",lnlist)
elseif &filetype=="sh" 0r ~/storage/documents/termux/vim_files/template/general.txt
"for循环找出需要修改的行 for i in range(line("$")-1)
let lnum=i+1
if getline(lnum)=="# File Name:"
"调用setline命令替换指定行的内容
call setline(lnum,getline(lnum).expand("%"))
elseif getline(lnum)=="# Created Time:"
call setline(lnum,getline(lnum).strftime("%Y %b %d %X"))endif
endfor endif
endfunc
本例中着重强调0r的使用,看的网友的资料,测试过0其实就是行首,如果将0改为1或者其他数字,新建的文件会空出相应行数再添加模板文件内容。
r有些像是register,具体的含义查过资料,并不能确定下来,不过目前只找到了这一种加入模板内容的方式。这样就可以只修改模板文件,不用大量修改配置文件。
在创建python文件模板时,因为模板中需要添加的内容较少,通过查找帮助文档,添加的内容可以先添加到列表中,当调用setline函数进行添加内容时,setline函数会降到列表种的元素逐个添加到新行中,可以减少很多的代码!
对于特定信息需要即时更改的模板,在新建sh脚本模板的代码块中有所提现,首先依然是0r替换模板内容到新建得文件中,然后再用for循环语句进行遍历行。当遍历到需要更改的行是,运行函数setline,使用新的格式化内容将其替换掉即可以。
本例仅仅提供思路,可以进行参考,适合自己的才是最好的。如果有更好的见解,欢迎评论区进行讨论