使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:
##############################################################

以上内容为创建时自动添加
相关推荐
轻揉小乔 真新人13 分钟前
使用memc-nginx和srcache-nginx模块构建高效透明的缓存机制
运维·nginx·缓存
Yan_chen66629 分钟前
SSH(Secure Shell)安全外壳协议详解
运维·网络协议·ssh
lingran__2 小时前
Linux 基础常用指令万字详解(上)|文件目录命令,结合底层原理剖析
linux·运维·服务器·后端·centos·linux基础指令
各类产品分享2 小时前
电力行业AR智能运维哪个品牌好
运维·ar·ar巡检
Dlrb12112 小时前
Linux驱动---sys文件系统自动添加设备节点、添加调试节点以及MISC设备驱动的解释
linux·imx6ull·misc·设备节点·sys文件系统
贾天佑忆月 迷失的昵3 小时前
客户端与服务器持续同步解析(轮询,comet,WebSocket)
运维·服务器·websocket
刘某的Cloud3 小时前
Galera Cluster mariadb 生产环境常见问题排查与运维指南
linux·运维·数据库·mariadb·集群高可用
70asunflower3 小时前
Linux 性能排查分析完全教程
linux·运维
zhangfeng11333 小时前
宝塔8 升级到 11导致 服务器无法访问外网dns失效了,无法访问bt.cn 解决方法 测试通过
运维·服务器
兵bing4 小时前
Docker Compose 配置文件归纳总结-千问
运维·docker·容器