Linux vi/vim 详解(进阶篇)

《Linux vi/vim 详解(进阶篇)》

🎯 学习目标

  1. 掌握 vim 中的多行操作技巧,包括多行删除、复制、移动、缩进、注释等。
  2. 熟练使用可视模式(Visual Mode)进行高效文本编辑。
  3. 学会使用宏录制批量替换正则匹配替换等高级功能。
  4. 结合实际案例(如修改 Nginx 配置、调试 Shell 脚本),提升在阿里云 Ubuntu ECS 上的运维效率。

🧠 核心重点(表格提炼)

技巧 命令 应用场景
多行删除 dd, 5dd, dG, d} 删除一段代码或配置项
多行复制粘贴 yy, 5yy, "+y 拷贝代码块或日志内容
可视化选中 v, V, Ctrl + v 精准选择多行或多列
缩进与对齐 >, <, =, :set paste 修复代码格式
快速注释/取消注释 I# Esc, s/^/# /g 注释脚本或配置
批量替换 :%s/pattern/replacement/g 替换变量名、路径等
宏录制 qa, ..., q 自动化重复操作
正则表达式替换 :s/\v(pattern)/replacement/g 高级文本处理

🔍 详细讲解(进阶操作技巧)

1. 多行删除操作 🗑️

✅ 删除当前行及下方 5 行:

5dd

✅ 删除从当前行到文件末尾:

dG

✅ 删除从当前位置到段落结尾(以空行为分隔):

d}

📌 提示:

  • d 是删除命令,后面跟一个“范围”即可。
  • 可配合 jk 键组合,先定位再删除。

2. 多行复制与粘贴 📋

✅ 复制当前行及下方 5 行:

5yy

✅ 粘贴到下一行:

p

✅ 粘贴到上一行:

P

✅ 将内容复制到系统剪贴板(需支持):

"+y

📌 说明:

  • "+" 表示系统剪贴板寄存器。
  • 可用于跨窗口复制内容,非常实用!

3. 可视化模式选中并操作 🖱️

✅ 字符级选中(逐字符):

v

✅ 行级选中(整行):

V

✅ 列块选中(按列选择):

Ctrl + v

✅ 示例:选中多行后添加前缀 # 注释:

  1. 进入列块模式:
Ctrl + v
  1. 选中你想插入的位置(例如每行开头)。

  2. I(大写 i)进入插入模式。

  3. 输入 #

  4. Esc,所有选中的行都会被自动加上 #

📌 提示:

  • 列块模式非常适合处理 CSV 文件、日志、配置文件等需要对齐的内容。

4. 缩进与对齐 📐

✅ 向右缩进一行:

>

✅ 向左缩进一行:

<

✅ 自动格式化整个文件(适合代码):

gg=G

📌 解释:

  • gg 移动到第一行。
  • = 是格式化命令。
  • G 是最后一行。
  • 组合起来就是“从头到尾格式化”。

✅ 开启粘贴模式(防止自动缩进干扰):

:set paste

📌 注意:

  • 粘贴时建议开启该模式,避免粘贴内容被自动缩进打乱格式。

5. 快速注释/取消注释代码块 📝

✅ 使用可视化模式添加注释(适用于 shell/bash):

  1. 使用 V 选中多行。
  2. I(大写 i)进入插入模式。
  3. 输入 #
  4. Esc,所有行都加上了注释。

✅ 使用正则表达式快速注释所有匹配行:

:%s/^/# /g

✅ 取消注释:

:%s/^# //

📌 说明:

  • ^ 表示行首。
  • # 表示以 # 加空格开头。
  • 适用于 Shell 脚本、Python 注释等。

6. 批量替换与正则匹配替换 🔍

✅ 全文替换某个字符串:

:%s/old_string/new_string/g

✅ 替换某几行(如第 10 到 20 行):

:10,20s/old/new/g

✅ 替换并确认每个结果:

:%s/old/new/gc

✅ 使用正则表达式(启用 \v 简化语法):

:s/\v(abc|def)/xyz/g

📌 常见正则符号:

符号 含义
. 任意字符
\d 数字
\w 单词字符
* 重复前一个字符 0 次或多次
+ 重复前一个字符至少一次
() 分组
` `

7. 宏录制自动化操作 🎬

宏可以记录你的一系列操作,并重复执行,非常适合重复性任务。

✅ 录制宏:

  1. q 键开始录制。
  2. 输入一个寄存器名称(如 a):
qa
  1. 执行一系列操作,比如:

    • 删除一行:dd
    • 插入新内容:i ➝ 输入内容 ➝ Esc
  2. 再次按 q 停止录制。

✅ 回放宏:

@a

✅ 重复执行 10 次:

10@a

📌 用途:

  • 清洗数据。
  • 修改大量配置项。
  • 自动生成测试数据。

8. 实战案例:ECS 上的 Vim 高效编辑实战 🛠️

场景一:修改 Nginx 配置,注释掉多个 server 块 🖥️

你在阿里云 Ubuntu ECS 上维护一个 Nginx 配置,想临时禁用几个虚拟主机配置。

✅ 操作如下:

  1. 打开配置文件:
sudo vim /etc/nginx/sites-available/default
  1. 使用 /server { 查找第一个 server 块。

  2. V 进入行级可视模式。

  3. } 往下扩展选择到下一个段落(假设是一个完整的 server 块)。

  4. I 进入插入模式,输入 #,然后按 Esc

📌 效果:

  • 整个 server 块都被注释,Nginx 不会加载该配置。

场景二:Shell 脚本中变量名统一替换 🔄

你想将脚本中的变量名 VAR1 改为 NEW_VAR

✅ 操作如下:

  1. 打开脚本:
vim script.sh
  1. 输入以下命令:
:%s/\bVAR1\b/NEW_VAR/g

📌 说明:

  • \b 是单词边界,确保只替换完整变量名,而不是 VAR123 的一部分。

场景三:清理日志文件中的无用信息 🧹

你想删除日志文件中所有包含 INFO 的行。

✅ 操作如下:

:g/INFO/d

📌 说明:

  • :g 是全局命令。
  • /INFO/ 匹配所有含 INFO 的行。
  • d 表示删除。

🧰 小贴士(进阶技巧)🔖

技巧 说明
:put = split('apple,banana,orange', ',') 在 Vim 中创建列表
:help pattern 查看正则表达式帮助
Ctrl + o / Ctrl + i 跳转历史位置
:registers 查看寄存器内容
:history 查看命令历史
:marks 查看标记点
:set filetype=sh 设置文件类型,启用语法高亮
:TOhtml 将当前缓冲区转换为 HTML 格式

📌 注意事项与安全建议

项目 建议
修改配置文件前务必备份 cp original.conf original.conf.bak
使用 sudo 编辑只读文件 sudo vim /etc/shadow
避免直接使用 vi(推荐 vim vim 支持更多特性
配置 .vimrc 提升体验 添加 set tabstop=4, syntax on, set number
使用 :recover 恢复崩溃文件 如果 vim 异常退出,可尝试恢复
定期清理 .swp 临时文件 防止因异常中断导致锁定提示

🧩 附录:.vimrc 推荐配置 💡

" 显示行号
set number

" 高亮搜索
set hlsearch

" 智能缩进
set smartindent

" 自动缩进
set autoindent

" 语法高亮
syntax on

" 鼠标支持
set mouse=a

" 状态栏显示当前文件名
set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%l,%v][%p%%]\ %{strftime(\"%Y-%m-%d\ %H:%M\")}

" 设置默认编码
set encoding=utf-8
set fileencoding=utf-8

🎯 总结一句话:

“掌握 vim 的进阶技巧,就像拥有了一个智能编辑机器人🤖 —— 它能帮你完成复杂的文本处理、自动化操作、精准替换和结构优化,让你在 Linux 世界里如鱼得水🐟!”

是否继续下一章?我将继续输出:

  • 《Shell 命令进阶与自动化脚本》🖥️
  • 《Linux 权限管理与 ACL 详解》🔐
  • 《Linux 日志分析与排错技巧》🔍

请告诉我你想深入的方向吧!🚀

posted @ 2025-06-17 21:41  红尘过客2022  阅读(157)  评论(0)    收藏  举报