Vim-vimrc 脚本文件表头设置

Vim-vimrc 脚本文件表头设置

文章目录

  • [Vim-vimrc 脚本文件表头设置](#Vim-vimrc 脚本文件表头设置)
        • 代码解释
          • [1. 设置作者名称](#1. 设置作者名称)
          • [2. 定义函数 `SetFileHeader`](#2. 定义函数 SetFileHeader)
            • [2.1 获取文件扩展名](#2.1 获取文件扩展名)
            • [2.2 仅对指定文件类型进行处理](#2.2 仅对指定文件类型进行处理)
            • [2.3 设置 Shebang](#2.3 设置 Shebang)
            • [2.4 插入文件头内容](#2.4 插入文件头内容)
            • [2.5 移动光标并进入插入模式](#2.5 移动光标并进入插入模式)
          • [3. 自动命令设置](#3. 自动命令设置)
bash 复制代码
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" 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. 设置作者名称
vim 复制代码
let g:author_name = "backend"  " Customize your name

这一行代码设置了一个全局变量 g:author_name,存储了作者的名称。在实际使用时,你可以将 "backend" 替换为你的名字,或者在 Vim 中设置为环境变量或其他方法来动态获取。

2. 定义函数 SetFileHeader
vim 复制代码
function! SetFileHeader()

这里定义了一个名为 SetFileHeader 的 Vim 函数,函数的作用是在创建文件时为文件添加头部注释。接下来,逐行解析函数内容:

2.1 获取文件扩展名
vim 复制代码
let file_ext = expand('%:e')  " Get file extension

expand('%:e') 用于获取当前文件的扩展名。% 是当前文件的路径,:e 表示提取文件的扩展名部分。例如,文件 example.py 的扩展名将是 py。

2.2 仅对指定文件类型进行处理
vim 复制代码
if index(['tcl', 'csh', 'tcsh', 'py'], file_ext) == -1
    return
endif

这一段代码检查当前文件的扩展名是否在指定的列表中(tcl, csh, tcsh, py)。如果不是这些文件类型中的一种,函数直接返回,不进行任何操作。

2.3 设置 Shebang

根据文件扩展名,设置相应的 Shebang(脚本文件的解释器声明)。不同的文件类型对应不同的解释器:

vim 复制代码
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() 函数插入文件头内容:

vim 复制代码
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 移动光标并进入插入模式
vim 复制代码
normal G
startinsert!

normal G 将光标移动到文件的末尾(即新插入内容的最后一行)。然后,startinsert! 命令使光标进入插入模式,准备让用户填写文件描述。

3. 自动命令设置
vim 复制代码
autocmd BufNewFile *.tcl,*.csh,*.tcsh,*.py call SetFileHeader()

autocmd 是 Vim 中的自动命令,当满足特定条件时会自动执行指定的命令。这里设置了一个 BufNewFile 自动命令,当创建新的文件时,文件类型为 tcl、csh、tcsh 或 py 时,自动调用 SetFileHeader 函数为文件添加头部注释。


相关推荐
qinglongcn6 小时前
Agent 可能出什么事——五类异常与应对
人工智能·编辑器·ai编程
QianhangQianping7 小时前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做
Halo10139 小时前
VSCode设置护眼背景色
ide·vscode·编辑器
广东帝工1 天前
智能调度系统:智慧航道释放通航效率的核心引擎
编辑器
广东帝工1 天前
船岸互联等技术趋势,改变航运传统构成
编辑器
QianhangQianping1 天前
一块大屏的数据在浏览器里怎么变成画面:背景、子屏、前景三层结构
前端·低代码·架构·编辑器·数据可视化·大屏可视化
小卡拉米本米1 天前
解决Vscode使用GitHub账号登录慢的问题
ide·vscode·编辑器
console.log('npc')2 天前
周期任务功能完整实现:CRON 编辑器 + 模板变量 + 执行历史
javascript·vue.js·编辑器
by209992 天前
Linux 软件安装与 Vim 编辑
linux·经验分享·vim
徐小夕@趣谈前端3 天前
Web 端 OFD 编辑器踩坑记:从“只能预览”到“在线改”
前端·编辑器