Vim-vimrc 脚本文件表头设置
文章目录
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Template Settings
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Auto-add file headers for Tcl, csh, tcsh, and Python files
let g:author_name = "backend" " Customize your name
function! SetFileHeader()
let file_ext = expand('%:e') " Get file extension
" Only process specified file types
if index(['tcl', 'csh', 'tcsh', 'py'], file_ext) == -1
return
endif
" Set shebang based on file type
if file_ext == 'tcl'
let shebang = '#!/usr/bin/tclsh'
elseif file_ext == 'csh' || file_ext == 'tcsh'
let shebang = '#!/bin/csh'
elseif file_ext == 'py'
let shebang = '#!/usr/bin/python3'
endif
" Insert header content
call setline(1, shebang)
call append(1, "# ------------------------------------")
call append(2, "# Author: " . g:author_name)
call append(3, "# Date: " . strftime("%Y/%m/%d %H:%M:%S"))
call append(4, "# ------------------------------------")
call append(5, "# Description: ")
call append(6, "# ------------------------------------")
call append(7, "")
" Position cursor at description line
normal G
startinsert!
endfunction
" Set autocommands for file creation
autocmd BufNewFile *.tcl,*.csh,*.tcsh,*.py call SetFileHeader()
代码解释
通过这段 Vim 配置脚本,我们成功地为特定类型的文件(如 Tcl、Csh、Tcsh 和 Python 文件)设置了一个自动添加文件头的功能。这个文件头包括了文件的 Shebang、作者、日期和描述等信息。利用 Vim 的自动命令和函数机制,我们能够轻松地为新创建的文件自动生成一个规范的头部注释,为代码的维护和协作提供了便利。
1. 设置作者名称
let g:author_name = "backend" " Customize your name
这一行代码设置了一个全局变量 g:author_name
,存储了作者的名称。在实际使用时,你可以将 "backend"
替换为你的名字,或者在 Vim 中设置为环境变量或其他方法来动态获取。
2. 定义函数 SetFileHeader
function! SetFileHeader()
这里定义了一个名为 SetFileHeader
的 Vim 函数,函数的作用是在创建文件时为文件添加头部注释。接下来,逐行解析函数内容:
2.1 获取文件扩展名
let file_ext = expand('%:e') " Get file extension
expand('%:e')
用于获取当前文件的扩展名。%
是当前文件的路径,:e
表示提取文件的扩展名部分。例如,文件 example.py
的扩展名将是 py
。
2.2 仅对指定文件类型进行处理
if index(['tcl', 'csh', 'tcsh', 'py'], file_ext) == -1
return
endif
这一段代码检查当前文件的扩展名是否在指定的列表中(tcl
, csh
, tcsh
, py
)。如果不是这些文件类型中的一种,函数直接返回,不进行任何操作。
2.3 设置 Shebang
根据文件扩展名,设置相应的 Shebang(脚本文件的解释器声明)。不同的文件类型对应不同的解释器:
if file_ext == 'tcl'
let shebang = '#!/usr/bin/tclsh'
elseif file_ext == 'csh' || file_ext == 'tcsh'
let shebang = '#!/bin/csh'
elseif file_ext == 'py'
let shebang = '#!/usr/bin/python3'
endif
tcl
文件使用#!/usr/bin/tclsh
csh
或tcsh
文件使用#!/bin/csh
py
文件使用#!/usr/bin/python3
2.4 插入文件头内容
接下来,使用 setline()
和 append()
函数插入文件头内容:
call setline(1, shebang)
call append(1, "# ------------------------------------")
call append(2, "# Author: " . g:author_name)
call append(3, "# Date: " . strftime("%Y/%m/%d %H:%M:%S"))
call append(4, "# ------------------------------------")
call append(5, "# Description: ")
call append(6, "# ------------------------------------")
call append(7, "")
setline(1, shebang)
:在文件的第一行插入 Shebang。append()
:将注释行逐行添加到文件中,内容包括作者、日期、描述等。
strftime("%Y/%m/%d %H:%M:%S")
用于生成当前日期和时间,格式为 YYYY/MM/DD HH:MM:SS
。
2.5 移动光标并进入插入模式
normal G
startinsert!
normal G
将光标移动到文件的末尾(即新插入内容的最后一行)。然后,startinsert!
命令使光标进入插入模式,准备让用户填写文件描述。
3. 自动命令设置
autocmd BufNewFile *.tcl,*.csh,*.tcsh,*.py call SetFileHeader()
autocmd
是 Vim 中的自动命令,当满足特定条件时会自动执行指定的命令。这里设置了一个 BufNewFile
自动命令,当创建新的文件时,文件类型为 tcl
、csh
、tcsh
或 py
时,自动调用 SetFileHeader
函数为文件添加头部注释。