在我们编写C/C++代码时,我们希望VIM可以帮助我们
- 插入文件整体开头注释,标注时间,作者等信息
- 插入常用的库文件的#include头
那么这篇文章帮助你在你的vimrc中配置满足你自己需要的文件头自动插入功能!
配置autocmd BufNewFile *h,*.cpp,*.c,*.sh,*.java exec ":call SetTitle()" func SetTitle() if expand("%:e") == 'sh' call setline(1,"#########################################################################") call append(line("."), "# File Name: ".expand("%")) call append(line(".")+1, "# Author: angelavor") call append(line(".")+2, "# mail: 2461677579@qq.com") call append(line(".")+3, "# Created Time: ".strftime("%c")) call append(line(".")+4, "#########################################################################") call append(line(".")+5, "#!/bin/bash") call append(line(".")+6, "") else call setline(1, "") call append(line(".")+5, "") endif if expand("%:e") == 'h' call append(line(".")+6,"#ifndef ".toupper(expand("%:r"))."_H") call append(line(".")+7,"#define ".toupper(expand("%:r"))."_H") call append(line(".")+8,"") call append(line(".")+9,"#endif") elseif expand("%:e") == 'cpp' call append(line(".")+6, "#include") call append(line(".")+7, "#include ") call append(line(".")+8, "#include ") call append(line(".")+9, "#include ") call append(line(".")+10, "#include ") call append(line(".")+11, "#include ") call append(line(".")+12, "#include ") call append(line(".")+13, "#include
你可以通过修改 BufNewFile 后的文件通配来指定你想要为哪些文件进行自动文件头插入,例如我这里仅会对 *h,*.cpp,*.c,*.sh,*.java 这些文件启用 SetTitle
使用文件后缀而不是filetype进行判断有些教程中会用 &filetype == 'cpp' 来进行文件类型的判断,但是这样有个BUG。就是对于*.h头文件的识别,不知为何&filetype会识别为cpp或者c。所以如果你使用了&filetype进行文件类型判断,你会发现你的.h文件并不会按你预料的那样插入需要的文件头。
因此,使用文件后缀会是一个不错的选择。expand函数是vim的内置函数之一,% 表示当前文件,e 是修饰符,表示只有扩展名。修饰符有以下几种:
- :p 扩展为完整的路径
- :h 去掉最后一个部分
- :t 只保留最后一个部分
- :r 根部(去掉扩展名)
- :e 只有扩展名
更多用法可查看Vim的帮助文档
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)