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


相关推荐
前端小超人rui11 小时前
UEditor 对接 秀米 手机编辑器流程与问题
编辑器
l1x1n013 小时前
Vim 编辑器常用操作详解(新手快速上手指南)
linux·编辑器·vim
Shan120521 小时前
编辑器Vim的快速入门
linux·编辑器·vim
通信小小昕1 天前
ubuntu18.04.1无法安装vscode(安装依赖无效)
ide·vscode·编辑器
禁默1 天前
Linux Vim 编辑器详解:从入门到进阶(含图示+插件推荐)
linux·vim·excel
ykjhr_3d1 天前
华锐云空间展销编辑器:开启数字化展示新时代
编辑器
许白掰1 天前
Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
linux·运维·服务器·前端·学习·编辑器
向宇it2 天前
【unity小技巧】在 Unity 中将 2D 精灵添加到 3D 游戏中,并实现阴影投射效果,实现类《八分旅人》《饥荒》等等的2.5D游戏效果
游戏·3d·unity·编辑器·游戏引擎·材质
TOSUN同星3 天前
干货分享 | TSMaster DBC编辑器操作指南:功能详解+实战示例
数据库·oracle·编辑器·汽车·软件工程
LIN-JUN-WEI3 天前
[ESP32]VSCODE+ESP-IDF环境搭建及blink例程尝试(win10 win11均配置成功)
c语言·开发语言·ide·vscode·单片机·学习·编辑器