在 Linux 系统里,Vim/Vi 是标配文本编辑器。系统自带、无需额外安装,crontab、visudo 等常用工具都会默认调用它,是运维和开发必须掌握的工具。
一、为什么要用 Vim
通用性强,所有 Linux 主机都预装,走到哪都能用
系统配置、定时任务等工具,默认调用 Vim/Vi 编辑
自带语法高亮,写代码、改配置能直观分辨语法,降低出错概率
二、三大核心模式(重中之重)
Vim 一共三种工作模式,打开文件默认进入命令模式。✅ 通用切换规则(记这一条就够)任意模式按下 Esc 键,回到命令模式命令模式默认进入,用来移动光标、复制、删除、查找、切换其他模式。
插入模式专门用来打字、修改文本内容。
命令行模式输入冒号:进入,用来保存、退出、设置行号、执行系统命令。
三、命令模式|高频操作(日常 90% 场景都用它)
1. 光标移动(必背)
方向控制:h 左、j 下、k 上、l 右
翻页:Page Down 向下翻页,Page Up 向上翻页
行首:0 或 Home 键
行尾:$ 或 End 键
屏幕定位:H 屏幕首行、M 屏幕中间行、L 屏幕末行
文件首尾:gg 跳到第一行,G 跳到最后一行
2. 查找与替换
向下搜关键词:/ 关键词
向上搜关键词:? 关键词
继续查找下一个:n
反向查找上一个:N
区间替换格式:n1,n2s / 原内容 / 新内容 /g示例:1,10s/abc/123/g 将 1-10 行的 abc 全部替换为 123
3. 删除内容
删单个字符:x 向后删,X 向前删
批量删字符:nx /nX 连续删除 n 个字符
删整行:dd 删除光标所在行
批量删行:ndd 从当前行向下删除 n 行示例:5dd 删除当前行及下方共 5 行
4. 复制与粘贴
复制整行:yy
批量复制:nyy 从当前行向下复制 n 行示例:3yy 复制当前行及下方共 3 行
粘贴:p 贴在光标下一行,P 贴在光标上一行
5. 撤销、重做、重复动作
撤销上一步:u
恢复撤销操作:Ctrl+r
重复上一个动作:.(小数点,高频常用)
6. 行合并
J 将当前行和下一行合并为一行
7. 进入插入 / 替换模式(编辑文字必备)
光标前后插入:i 光标前插入,a 光标后插入
行首尾插入:I 行首插入,A 行尾插入
新建空行:o 下方新建行,O 上方新建行
单字符替换:r 只替换当前 1 个字符
连续替换:R 持续替换,按 Esc 结束
四、命令行模式(输入:进入)
1. 保存 & 退出(最常用)
:w 保存文件
:w 新文件名 另存为新文件
:n1,n2 w 新文件名 将指定行内容另存为新文件
:wq 保存并退出
:wq! 强制保存并退出
:q 正常退出(文件未修改)
:q! 强制退出,不保存任何修改
2. 实用小功能
:! 系统命令 临时调用 Linux 命令,执行后回到 Vim示例::! ls /home 查看 /home 目录内容
:r 文件名 把外部文件内容,读取到当前文档中
:set nu 显示行号
:set nonu 关闭行号
五、异常处理:.swap 暂存文件
场景:异常断电、强制关闭终端、多人同时编辑同一文件,会生成 .swap 暂存文件。再次打开文件会弹出选项,对应功能如下:O 以只读方式打开文件
E 正常打开,忽略暂存文件
R 恢复未保存的内容(恢复后手动删除 .swap 文件)
D 直接删除无效的暂存文件
Q 退出 Vim,不做任何操作
A 终止本次编辑,返回终端
六、进阶功能(按需学习,提升效率)
1. 区块批量选择
v 字符选择,按光标拖动选字符
V 行选择,直接选中整行
Ctrl+v 矩形区块选择,框选长方形区域
y 复制选中内容
d 删除选中内容
p 粘贴选中内容
2. 文字自动补全
Ctrl+x 再按 Ctrl+n 基于本文内容补全
Ctrl+x 再按 Ctrl+f 基于当前目录文件名补全
Ctrl+x 再按 Ctrl+o 基于语法关键字补全
3. 多文件同时编辑
一次性打开多个文件,方便内容互相复制打开方式:vim 文件 1 文件 2 文件 3:files 查看所有已打开文件
:n 切换到下一个文件
:N 切换到上一个文件
4. 多窗口分屏
:sp 水平分屏,打开当前文件
:sp 文件名 水平分屏并打开新文件示例::sp test.txt
Ctrl+w 再按 j / 向下键 光标切到下方窗口
Ctrl+w 再按 k / 向上键 光标切到上方窗口
Ctrl+w 再按 q 关闭当前窗口
5. 环境配置与使用记录
全局配置:/etc/vimrc 对所有用户生效
个人配置:~/.vimrc 仅对当前用户生效
:set all 查看全部环境参数
:set 查看已修改的参数
使用记录:~/.viminfo 自动记录编辑历史
七、跨系统文件格式问题(乱码解决方案)
1. 换行符不兼容
DOS 和 Linux 换行规则不同,跨系统传输会出现 ^M 乱码DOS 换行:\r\n
Linux 换行:\n转换命令:
dos2unix 文件名 DOS 格式转 Linux
unix2dos 文件名 Linux 格式转 DOS
2. 字符编码转换(解决中文乱码)
使用 iconv 切换文件编码基础格式:iconv -f 原编码 -t 新编码 原文件 -o 新文件iconv --list 查看系统支持的所有编码示例:iconv -f GBK -t UTF-8 test.txt -o new_test.txt将 GBK 编码转为 UTF-8,生成新文件 new_test.txt
八、新手快速总结
核心逻辑:打开文件 = 命令模式,按 Esc 永远回到命令模式
必学指令:光标移动、dd/yy/p、u、:wq、:q!,掌握这些可应对绝大多数场景
异常提醒:出现 .swap 文件,根据需求选择恢复或删除
乱码处理:换行符用 dos2unix,中文乱码用 iconv 转换
进阶技巧:区块选择、分屏、多文件编辑,适合批量操作与多文件对比