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

vim配置——新建.c.cpp.h时自动插入文件头,第1张

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的帮助文档

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5692469.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存