Vim-vimrc 脚本文件表头设置

发布于:2025-06-21 ⋅ 阅读:(14) ⋅ 点赞:(0)

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
  • cshtcsh 文件使用 #!/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 自动命令,当创建新的文件时,文件类型为 tclcshtcshpy 时,自动调用 SetFileHeader 函数为文件添加头部注释。



网站公告

今日签到

点亮在社区的每一天
去签到