栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

vim配置——新建.c/.cpp/.h时自动插入文件头

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

vim配置——新建.c/.cpp/.h时自动插入文件头

需求

在我们编写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 ")
       call append(line(".")+14, "#include ")
       call append(line(".")+15, "#include ")
       call append(line(".")+16, "using namespace std;")
       call append(line(".")+17, "")
   elseif expand("%:e") == 'c'
       call append(line(".")+6, "#include")
       call append(line(".")+7, "#include")
       call append(line(".")+8, "#include")
       call append(line(".")+9, "")
    endif
	" 新建文件后自动定位到文件末尾
	autocmd BufNewFile * normal G
endfunc

你可以通过修改 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的帮助文档

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/691984.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号