这里利用vim的脚本功能为 C/C++ 文件自动添加日期、版权等说明信息。同样的方法可用于 Python 等类型的文件处理。

1. 自动添加文件头

首先新建一个文件c_header.vim

  1. :insert
  2. /*********************************************************
  3. * File Name:
  4. * Purpose:
  5. * Creation Date:
  6. * Last Modified:
  7. * Created By: zhangzq@citics.com
  8. *********************************************************/
  9. #include "util/stdafx.h"
  10. .

然后在~/.vimrc中添加bufnewfile事件回调:

  1. autocmd bufnewfile *.c,*.cpp,*.h so ~/config/c_header.vim
  2. autocmd bufnewfile *.c,*.cpp,*.h exe "1,6g/File Name:.*/s//File Name: " .expand("%")
  3. autocmd bufnewfile *.c,*.cpp,*.h exe "1,6g/Creation Date:.*/s//Creation Date: " .strftime("%Y-%m-%d")
  4. autocmd bufnewfile *.h exe "1,9g/^#include.*/s//#pragma once/"

2. 自动更新文件最后修改日期

~/.vimrc中添加bufwriteprefilewritepre事件:

  1. autocmd Bufwritepre,filewritepre *.c,*.h,*.cpp execute "normal ma"
  2. autocmd Bufwritepre,filewritepre *.c,*.h,*.cpp exe "1,6g/Last Modified:.*/s/Last Modified:.*/Last Modified: " .strftime("%Y-%m-%d")
  3. autocmd bufwritepost,filewritepost *.c,*.h,*.cpp execute "normal `a"

3. 处理老文件

假设之前有些文件没有经过上述脚本的处理,现在需新添加文件头,可以按照以下步骤操作。

首先:新建一个c_header_for_exist_file.vim文件:

  1. :normal ma
  2. :normal gg
  3. :insert
  4. /***************************************************************
  5. * File Name:
  6. * Purpose:
  7. * Creation Date:
  8. * Last Modified:
  9. * Created By: zhangzq@citics.com
  10. ****************************************************************/
  11. .
  12. :1,6s/File Name:.*/\='File Name: ' . expand("%")
  13. :1,6s/Creation Date:.*/\='Creation Date: ' .strftime("%Y-%m-%d")
  14. :normal `a

对于单个文件,用vim打开后运行:source c_header_for_exist_file.vim即可。

如果有很多文件需要处理,此时可用vimargdo功能。

首先打开vim,然后用args命令打开所有需要处理的文件:

  1. :args *.cpp *.h

然后用argdo运行命令即可:

  1. :argdo source c_header_for_exist_file.vim

https://zhangzq.gitbooks.io/notes/content/md/vim-auto-add-header.html