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 函数为文件添加头部注释。


相关推荐
白日梦想家6818 小时前
第三篇:Node.js 性能优化实战:提升服务并发与稳定性
linux·编辑器·vim
万法若空9 小时前
Vim常用指令汇编
汇编·编辑器·vim
量子炒饭大师19 小时前
【一天一个计算机知识】—— VScode 极速搭建:打造你的全能代码武器库
ide·vscode·编辑器
-嘟囔着拯救世界-19 小时前
【保姆级教程】Win11 下从零部署 Claude Code:本地环境配置 + VSCode 可视化界面全流程指南
人工智能·vscode·ai·编辑器·html5·ai编程·claude code
gagaga....19 小时前
解决claude code for vscode对话返回 api error: 403 {“error“:{“type“:“forbidden“,“message“:.....的问题过程
ide·vscode·编辑器
hjx05101119 小时前
VSCode与Anaconda安装全攻略
ide·vscode·编辑器
小小管写大大码19 小时前
如何让vscode变得更智能?vscode接入claude实现自动编程
运维·ide·vscode·自动化·编辑器·ai编程·腾讯云ai代码助手
Hello World . .1 天前
数据结构:栈和队列
c语言·开发语言·数据结构·vim
山峰哥1 天前
SQL优化全解析:从索引策略到查询性能飞跃
大数据·数据库·sql·编辑器·深度优先
木斯佳1 天前
OpenTiny:快速搭建实时协作文本编辑器:基于 TinyEditor 的实践指南
编辑器