使vim创建.sh文件时自动添加头部描述信息

目录

需求

在编写shell脚本时,为了便于后续阅读或修改或SOP需求,我们常常会在shell脚本前添加一些描述信息,用于标注其作用和shell版本,例如:

shell 复制代码
#!/bin/bash
# File Name:
# Version:
# Author:
# Organization:
# Desc:

对于这样对某一类文件进行标准化初始化时,实际可以使用vim的配置文件/etc/vimrc

解决方案

vimrc配置文件

  • vimrc是Vim的配置文件,用于设置Vim编辑器的各种功能和个性化选项。通过编辑vimrc文件,用户可以根据自己的使用习惯和需求,定制Vim的界面、快捷键、语法高亮等功能。

  • vimrc配置文件分为系统配置用户配置两种。

    • 系统vimrc配置文件存放在Vim的安装目录中,默认路径为./etc/vimrc
    • 用户vimrc配置文件则存放在用户主目录下,默认路径为~/.vimrc
      • 用户配置文件优先于系统配置文件生效。

常见选项

功能描述 vimrc 命令
显示行号 set numberset nu
语法高亮 set syntax enable
自动缩进 set autoformatset ai
搜索高亮 set hlsearch
禁用Tab键插入制表符 set tabstop=4

修改vimrc

为了实现需求的要求,只需要在/etc/vimrc文件最后添加以下内容即可。

需要注意,修改vimrc配置文件前最好备份一份,以防修改错误导致vim不可使用。

shell 复制代码
cat >> /etc/vimrc << 'EOF'

set ignorecase 
autocmd BufNewFile *.py,*.cc,*.sh,*.java exec ":call SetTitle()"

func SetTitle()
if expand("%:e") =='sh'
call setline(1, "#!/bin/bash")
call setline(2,"##############################################################")
call setline(3, "# File Name:".expand("%"))
call setline(4, "# Version:V1.0")
call setline(5, "# Author:tassel")
call setline(6, "# Organization:self-study")
call setline(7, "# Desc:")
call setline(8,"##############################################################")
endif
endfunc

功能解释

这个配置的作用是,当在 Vim 中创建一个新的 Python、C++、Shell 或 Java 文件时,它会自动调用 SetTitle 函数,为这些文件添加一些标准的注释模板。

  1. vim /etc/vimrc:这是命令行指令,用于打开 Vim 编辑器并加载 /etc/vimrc 文件进行编辑。

  2. set ignorecase:设置 Vim 在搜索时忽略大小写。

  3. autocmd BufNewFile .py, .cc,.sh,.java exec ":call SetTitle()":这是一个自动命令(autocmd),用于在创建新文件时自动执行 SetTitle() 函数。这个命令适用于扩展名为 .py, .cc, .sh, .java 的文件。

  4. func SetTitle():定义一个名为 SetTitle 的 Vim 函数。

  5. if expand("%:e") =='sh':检查当前文件的扩展名是否为 .sh。

  6. call setline(1, "#!/bin/bash"):如果是 .sh 文件,就在文件的第一行添加 #!/bin/bash,这是 shell 脚本的 shebang 行,指定脚本使用 bash 解释器。

  7. call setline(2,"##############################################################"):在第二行添加一行分隔线。

  8. call setline(3, "# File Name:".expand("%")) 到 call setline(8,"##############################################################"):在第三行到第八行之间添加注释信息,包括文件名、版本、作者、组织和描述,以及分隔线。expand("%") 函数用于获取当前文件的完整路径。

  9. endif:结束 if 条件判断。

  10. endfunc:结束函数定义。

效果

shell 复制代码
[root@manager scripts]# vim test.sh
#!/bin/bash
##############################################################
# File Name:test.sh
# Version:V1.0
# Author:tassel
# Organization:self-study
# Desc:
##############################################################

以上内容为创建时自动添加
相关推荐
TiDB_PingCAP26 分钟前
国产化新标杆:TiDB 助力广发银行新一代总账系统投产上线
运维·数据库·开源·tidb
qyhua29 分钟前
Linux内网端口转公网端口映射
linux·运维·服务器
coisini.cn1 小时前
基于CentOS Stream 9平台搭建MinIO以及开机自启
运维·minio·centos stream 9
j.king2 小时前
开源GTKSystem.Windows.Forms框架让C# winform支持跨平台运行
linux·c#·gtk
Python私教3 小时前
docker部署onlyoffice,开启JWT权限校验Token
运维·docker·容器
stackY、3 小时前
【Linux】:程序地址空间
linux·算法
Ramboooooooo3 小时前
Nginx Lua Waf 插件一键部署
运维·nginx·lua·waf·lua waf·nginx waf
R语言爱好者4 小时前
如何查看程序是否在运行-Linux
linux
逆风就重开4 小时前
数据埋点从入门到了解
大数据·linux·前端·数据库·数据仓库