Linux vi/vim 详解(进阶篇)

Linux vi/vim 详解(进阶篇)

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

🎯 学习目标

掌握 vim 中的多行操作技巧,包括多行删除、复制、移动、缩进、注释等。

熟练使用可视模式(Visual Mode)进行高效文本编辑。

学会使用宏录制、批量替换、正则匹配替换等高级功能。

结合实际案例(如修改 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 是删除命令,后面跟一个“范围”即可。

可配合 j 或 k 键组合,先定位再删除。

2. 多行复制与粘贴 📋

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

5yy

✅ 粘贴到下一行:

p

✅ 粘贴到上一行:

P

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

"+y

📌 说明:

"+" 表示系统剪贴板寄存器。

可用于跨窗口复制内容,非常实用!

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

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

v

✅ 行级选中(整行):

V

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

Ctrl + v

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

进入列块模式:

Ctrl + v

选中你想插入的位置(例如每行开头)。

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

输入 #。

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

📌 提示:

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

4. 缩进与对齐 📐

✅ 向右缩进一行:

>

✅ 向左缩进一行:

<

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

gg=G

📌 解释:

gg 移动到第一行。

= 是格式化命令。

G 是最后一行。

组合起来就是“从头到尾格式化”。

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

:set paste

📌 注意:

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

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

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

使用 V 选中多行。

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

输入 #。

按 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. 宏录制自动化操作 🎬

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

✅ 录制宏:

按 q 键开始录制。

输入一个寄存器名称(如 a):

qa

执行一系列操作,比如:

删除一行:dd

插入新内容:i ➝ 输入内容 ➝ Esc

再次按 q 停止录制。

✅ 回放宏:

@a

✅ 重复执行 10 次:

10@a

📌 用途:

清洗数据。

修改大量配置项。

自动生成测试数据。

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

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

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

✅ 操作如下:

打开配置文件:

sudo vim /etc/nginx/sites-available/default

使用 /server { 查找第一个 server 块。

按 V 进入行级可视模式。

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

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

📌 效果:

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

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

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

✅ 操作如下:

打开脚本:

vim script.sh

输入以下命令:

:%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 日志分析与排错技巧》🔍

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

🎎 相关推荐

4G手机必备省流攻略,运营商永远不会告诉你,1个月省下30G
🎯 mobile365体育投注下载

4G手机必备省流攻略,运营商永远不会告诉你,1个月省下30G

📅 09-15 👀 5388
百度雲保存的文件可以保存多久?
🎯 365账号怎么注册

百度雲保存的文件可以保存多久?

📅 07-17 👀 608
足疗机哪个品牌好?推荐这10款,足部按摩舒适放松!
🎯 你们的365还进得去吗

足疗机哪个品牌好?推荐这10款,足部按摩舒适放松!

📅 02-03 👀 8678