1. 为什么每个Linux运维都要掌握Vim第一次在服务器上遇到紧急故障时我手忙脚乱地尝试用nano修改配置文件结果发现这台老旧的CentOS系统居然连nano都没装。那一刻我才真正理解前辈们为什么总说不会Vim的运维就像没带刀的厨师——Vim是Linux系统自带的瑞士军刀从最小化的Docker容器到嵌入式设备它永远在那里等着你。Vim的学习曲线确实像过山车。记得最初我连保存退出都要百度现在却能闭着眼睛完成多文件批量替换。这种进化带来的效率提升是惊人的——在终端环境中熟练的Vim操作速度可以碾压任何图形化编辑器。更关键的是当你需要通过SSH管理数百台服务器时Vim是唯一确定存在的编辑工具。2. Vim的三种模式解析2.1 命令模式Vim的指挥中心刚接触Vim时最困惑的就是为什么按字母键会执行各种奇怪操作。这其实是Vim的命令模式相当于编辑器的控制台。这里分享几个改变我工作效率的魔法组合di删除引号内内容ddeleteiinsideciw修改当前单词cchangeiinsidewwordvip选中整个段落vvisualiinsidepparagraph特别提醒在命令模式下连续按两次d会删除整行记得提前保存重要文件。我曾经不小心清空了nginx配置付出了惨痛代价。2.2 插入模式真正的文本编辑按i进入插入模式后Vim才表现得像常规编辑器。但高手会利用这些进阶技巧Ctrlh删除前一个字符比退格键更顺手Ctrlw删除前一个单词Ctrlu删除当前行所有内容2.3 可视模式精准选区艺术可视模式有三种变体字符可视模式v选择任意字符范围行可视模式V整行选择块可视模式Ctrlv矩形选区批量编辑神器我常用块模式同时修改多行配置文件的相同位置比如给一组服务器IP批量添加注释符号。3. 运维必备的Vim生存技能3.1 文件操作四部曲快速导航:e /path/to/file打开新文件多窗口操作:split水平分屏Ctrlww切换窗口缓冲区管理:ls查看缓冲区列表:b2切换到2号缓冲区保存特权:w !sudo tee %用root权限保存只读文件3.2 搜索替换的终极奥义处理日志时这个命令救了我无数次:%s/error/ERROR/gc%全文范围s替换命令/g全局替换/c每次替换前确认更强大的带正则表达式版本:%s/\v\d{4}-\d{2}-\d{2}/[]/g这个命令会把所有YYYY-MM-DD格式的日期加上方括号。3.3 宏录制重复劳动的克星面对需要批量处理的配置文件qa开始录制宏到寄存器a执行一系列操作如跳转到行首添加注释符q停止录制a执行宏100a重复执行100次4. 高级运维技巧实战4.1 用Vim调试日志文件:set hlsearch 高亮搜索结果 /ERROR\|WARN 搜索错误和警告 :set foldmethodmarker 按标记折叠 zf/^2023 从当前行折叠到下一个以2023开头的行4.2 与Shell的无缝协作:!ls -l不退出Vim执行shell命令:r !date插入命令输出结果!!ls用ls输出替换当前行4.3 个性化.vimrc配置我的运维专用配置片段set number 显示行号 set tabstop4 Tab显示为4空格 set expandtab 自动转换Tab为空格 set list 显示不可见字符 set listcharstab:-,trail:~ 定制显示样式 autocmd FileType yaml setlocal ts2 sts2 sw2 YAML文件特殊设置5. 常见问题排雷指南5.1 方向键输出ABCD这是终端兼容问题解决方案:set nocompatible :set backspaceindent,eol,start5.2 粘贴后格式错乱使用粘贴专用模式:set paste 粘贴内容 :set nopaste5.3 恢复交换文件当看到swap file already exists警告时vim -r filename 恢复文件 rm .filename.swp 删除交换文件6. 效率飞跃的快捷键地图6.1 移动类H/M/L屏幕顶部/中间/底部Ctrld/Ctrlu半页下/上翻}/{跳转段落6.2 编辑类/增加/减少缩进gUaw当前单词转大写.重复上次修改6.3 窗口管理Ctrlw v垂直分屏Ctrlw o关闭其他窗口Ctrlw r旋转窗口位置7. 从入门到精通的训练路径第一周掌握i/ESC/:wq基础生存技能第二周学习h/j/k/l移动和dd/yy/p编辑第三周实践w/b/e单词级移动和ciw/di文本对象第四周掌握/搜索和:%s替换持续进阶每周学习1个新命令录制个人cheatsheet我坚持用Vim写所有脚本和文档三个月后手指就形成了肌肉记忆。现在即使在GUI编辑器里也会不自觉地按ESC想执行Vim命令这大概就是所谓的Vim中毒吧。
阅读完成 · 觉得有帮助?