前言
今天公司生产有个作业出现了故障,依次排查追溯到了一个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
- 详情参考:zhuanlan.zhihu.com/p/98360630
shell其他参数设置
如果你想关闭某个选项,在命令前加
no
即可 如:setnonumber
就是不显示行号啦
参数 | 注释 | |
---|---|---|
set -o | 查看设置参数是On还是Off | |
set -u | 如果变量没有被赋值,则直接报错 | |
set cursorline | 光标所在当前行高亮 | |
set textwidth=80 | 设置行宽,即一行显示多少个字符 | |
set showmatch | 光标遇到括号时,自动高亮另一个对应的括号 | |
set number | 显示行号 | |
set showmode | 在底部显示,当前处于命令模式还是插入模式 | |
set mouse=a | 支持使用鼠标 | |
set encoding=utf-8 | 使用 utf-8 编码 | |
set spell spelllang=en_us | 打开英语单词的拼写检查 | |
set visualbell | 出错时,发出视觉提示 | |
set history=1000 | 记录历史操作数量 | |
set ignorecase | 搜索时忽略大小写 | |
set hlsearch | 搜索时高亮显示匹配结果 | |
set t_Co=256 | 启用256色 | |
filetype indent on | 自动匹配文件后缀语言缩进规则 | |
set autoindent | 下一行缩进自动与上一行保持一致 | |
set tabstop=x | 按tab键是几个空格 | |
set expandtab | 不同编辑器tab空格数量不同,设置自动把tab转为空格 | |
set softtabstop=2 | tab转换为几个空格 | |
set listchars=tab:»■,trail:■ | 如果行尾有多余的空格(包括 Tab 键),该配置将让这些空格显示成可见的小方块 | |
set list | 跟上一条命令配套使用 | |
set wildmenu | 命令模式下,操作指令按下Tab自动补全。第一次按下显示所有匹配的操作指令的清单;第二次按下依次选择各个指令。 | |
set wildmode=longest:list,full | 跟上一条命令配套使用 | |
errexit -e | 当命令返回一个非零退出状态(失败)时退出 | |
keyword -k | 将关键字参数放入到命令的环境中 | |
noclobber -C | 防止文件在重定向时被重写 | |
notify -b | 后台作业完成时通知用户 | |
physical -P | 在键入cd 或pwd 禁止符号链接,需使用物理全路径 | |
verbose -v | Debug模式,详细输出都会被打印显示 | |
xtrace -x | 为调试打开echo模式 |
参考链接