Bootstrap

优雅的编码习惯总是让人心情愉悦(Shell篇)

前言

今天公司生产有个作业出现了故障,依次排查追溯到了一个SHELL脚本。使用VIM打开该脚本后直接麻了,所有人都不知道这是谁写的脚本,脚本对应的执行代码在哪里,没有出处,没有标注,没有创建时间,简直是“三无产品”。

为了彻底杜绝这种问题再次发生,指望口头约束肯定是没太大用处的。使用下文的方式来解决此类问题发生。

就像你编写代码时使用类似IDEA的功能

实战

生效范围设置

  • 当前用户:

[root@xinxing01 ~]# vim ~/.vimrc

  • 全局:

[root@xinxing01 ~]# vim /etc/vimrc

追加写入如下内容(不要把原来的东西覆盖或删除!)

set ignorecase
set autoindent
set paste
autocmd BufNewFile *.sh exec ":.call SetTitle()"
func SetTitle()
if expand("%:e") == 'sh'
call setline(1,"#!/bin/bash")
call setline(2,"#***********************************************")
call setline(3,"#Author:        Administrator")
call setline(4,"#Args:1.xxxxx   2.xxxxxx        3.xxxxxxx ")
call setline(5,"#Version:       1.0")
call setline(6,"#Date:          ".strftime("%Y-%m-%d HH:mm:ss"))
call setline(7,"#FileName:      ".expand("%"))
call setline(8,"#Description:   The test script")
call setline(9,"#***********************************************")
call setline(10,"")
endif
endfunc
autocmd BufNewFile * normal G

参数解释

  • set ignorecase:忽略大小写

  • set autoindent:自动缩进

  • set paste: 设置粘贴模式

  • autocmd:自动执行命令

  • autocmd [group] events pattern [nested] command

  • 详情参考:https://zhuanlan.zhihu.com/p/98360630

效果演示

直接使用 vim命令新建一个文件,效果如下

用户处可以动态获取当前Linux登录用户,自己实现吧,随便百度

shell其他参数设置

如果你想关闭某个选项,在命令前加即可 如:set 就是不显示行号啦

参考链接

  • https://dougblack.io/words/a-good-vimrc.html

  • http://vimdoc.sourceforge.net/htmldoc/options.html