Linux命令-vi(经典终端文本编辑器)
快速参考:vi 是 Linux/Unix 系统预装的 经典终端文本编辑器,拥有模式化编辑哲学,是所有系统管理员的必备技能。现代系统中 vi 通常是 vim(Vi Improved)的符号链接。
🔰 命令简介
vi(Visual Editor)诞生于 1976 年,由 Bill Joy 开发,是 Unix 世界中 使用最广泛的文本编辑器。其核心设计理念是模式化编辑——将文本浏览与文本编辑分离,通过键盘快捷键实现高效操作。
💡 重要提示:现代 Linux 发行版中,
vi命令通常链接到vim(Vi IMproved),后者提供了语法高亮、多级撤销、插件系统等增强功能。学习vi实际上是学习vim的基础操作。
vim 有四种基本模式:
| 模式 | 进入方式 | 用途 |
|---|---|---|
| 普通模式 | 默认模式 / 按 Esc | 浏览文本、执行命令 |
| 插入模式 | i a o O 等 | 输入文本 |
| 可视模式 | v V Ctrl+v | 选择文本块 |
| 命令行模式 | : / ? | 执行 Ex 命令 |
📖 语法格式
vi [选项] [文件...]
# vim 增强语法
vim [选项] [文件...]
# 从指定行开始
vi +行号 文件名
# 从匹配模式开始
vi +/模式 文件名
⚙️ 常用选项
| 选项 | 说明 |
|---|---|
-R | 只读模式打开文件(等同 view) |
-r | 列出可恢复的交换文件,或从交换文件恢复 |
+行号 | 打开文件后光标定位到指定行 |
+/模式 | 打开文件后光标定位到首次匹配处 |
-b | 二进制模式 |
-d | 差异模式(相当于 vimdiff) |
-o[N] | 水平分割打开 N 个窗口 |
-O[N] | 垂直分割打开 N 个窗口 |
-c 命令 | 启动后执行指定的 Ex 命令 |
💡 实战示例
1. 基本文件操作
# 打开文件(如果文件不存在则新建)
vi /etc/hosts
# 打开多个文件(使用 :n 和 :prev 切换)
vi file1.txt file2.txt file3.txt
# 以只读模式打开
vi -R important.conf
# 跳到第 100 行打开
vi +100 /var/log/syslog
# 跳到包含 "error" 的行
vi +/error /var/log/syslog
# 恢复上次异常退出的文件
vi -r
# 恢复指定交换文件
vi -r .notes.txt.swp
2. 移动与导航(普通模式)
# 基本方向移动(替代方向键)
h # ← 左移一个字符
j # ↓ 下移一行
k # ↑ 上移一行
l # → 右移一个字符
# 单词级移动
w # 移动到下一个单词开头
b # 移动到上一个单词开头
e # 移动到当前单词末尾
# 行内快速跳转
0 # 跳到行首
^ # 跳到第一个非空白字符
$ # 跳到行尾
# 全文跳转
gg # 跳到文件第一行
G # 跳到文件最后一行
:100 # 跳到第 100 行
3. 插入与编辑
# 进入插入模式的方式
i # 在光标前插入
a # 在光标后插入
I # 在行首插入
A # 在行尾插入
o # 在下方新建一行并插入
O # 在上方新建一行并插入
# 复制粘贴(普通模式)
yy # 复制当前行
3yy # 复制 3 行
yw # 复制一个单词
y$ # 复制到行尾
p # 在光标后粘贴
P # 在光标前粘贴
# 删除操作
x # 删除光标处字符
dd # 删除(剪切)当前行
5dd # 删除 5 行
dw # 删除一个单词
d$ # 删除到行尾
D # 同 d$,删除到行尾
4. 撤销与重做
u # 撤销上一步操作
Ctrl+r # 重做(恢复撤销)
U # 撤销对当前行的所有修改
. # 重复上一次修改操作
5. 搜索与替换
# 搜索
/pattern # 向下搜索 "pattern"
?pattern # 向上搜索 "pattern"
n # 跳转到下一个匹配
N # 跳转到上一个匹配
* # 向下搜索光标所在单词
# # 向上搜索光标所在单词
# 替换(命令行模式)
:s/old/new/ # 替换当前行第一个匹配
:s/old/new/g # 替换当前行所有匹配
:%s/old/new/g # 替换整个文件所有匹配
:%s/old/new/gc # 替换前逐个确认
:10,20s/old/new/g # 替换第 10 到 20 行的匹配
6. 可视模式操作
# 进入可视模式
v # 字符可视模式
V # 行可视模式
Ctrl+v # 块可视模式
# 可视模式中的典型操作
# 选择文本后按 d 删除
# 选择文本后按 y 复制
# 选择文本后按 > 缩进
# 选择文本后按 < 反缩进
# 块可视模式批量编辑(列编辑)
# 1. Ctrl+v 进入块模式
# 2. 选择多行
# 3. Shift+i 进入插入模式
# 4. 输入内容后按 Esc,所选行会批量添加
7. 保存、退出与文件操作
# 保存与退出
:w # 保存文件
:w filename # 另存为 filename
:q # 退出
:q! # 强制退出(不保存修改)
:wq # 保存并退出
:x # 保存并退出(同 :wq)
ZZ # 保存并退出(普通模式下)
# 强制保存只读文件(需要权限)
:w !sudo tee % # 以 sudo 权限保存当前文件
8. 多窗口与标签页
# 分割窗口
:split 文件名 # 水平分割
:vsplit 文件名 # 垂直分割
Ctrl+w w # 在窗口间切换
Ctrl+w q # 关闭当前窗口
Ctrl+w = # 等分窗口大小
# 标签页
:tabnew 文件名 # 新建标签页
:tabnext # 下一个标签页
:tabprevious # 上一个标签页
gt # 切换到下一个标签页
9. 实用外部命令集成
# 在 vi 中执行 Shell 命令
:!ls -la # 执行 ls 命令并显示结果
:!date # 显示日期
:r !date # 将命令输出插入到当前光标位置
:r /etc/hosts # 将文件内容插入到当前光标位置
# 对选中的文本执行外部命令
# 可视模式下选中文本,然后按 :!sort
:'<,'>!sort # 对选中的行进行排序
:%!sort -u # 对整个文件排序并去重
10. 配置与自定义
# 查看当前 vim 配置
:set # 显示所有修改过的选项
:set all # 显示所有选项
:set number # 显示行号
:set nonumber # 隐藏行号
:set tabstop=4 # 设置 Tab 宽度为 4
:set expandtab # Tab 转换为空格
:set hlsearch # 高亮搜索结果
:set nohlsearch # 取消搜索高亮
:set ignorecase # 搜索忽略大小写
:set smartcase # 智能大小写(有大写则区分)
:syntax on # 开启语法高亮
:syntax off # 关闭语法高亮
⚠️ 危险操作与注意事项
⚠️ 危险警告:以下操作可能造成数据丢失,请谨慎执行。
# 危险:强制退出不保存修改
:q! # 所有未保存的修改将永久丢失
# 危险:批量替换可能产生意外结果
:%s/old/new/g # 替换前建议先 /old 搜索确认范围
# 回滚方案
# 1. 使用 u 撤销单步操作
# 2. 使用 :e! 重新加载文件(放弃所有修改)
# 3. 检查交换文件恢复:vi -r filename
💡 关键提醒:
- 养成经常按
Esc回到普通模式的习惯- 修改配置文件前先备份:
cp /etc/fstab /etc/fstab.bak- 系统文件编辑使用
sudoedit或sudo -e更安全- vimtutor(
vimtutor命令)是官方新手教程,推荐所有初学者运行
📚 相关命令
| 命令 | 关系与说明 |
|---|---|
vim | vi 的增强版本,支持语法高亮、插件等 |
vimdiff | 使用 vim 对比文件差异(vim -d file1 file2) |
vimtutor | vim 官方交互式教程 |
nano | 更简单的终端文本编辑器,适合新手 |
emacs | 另一个强大的终端编辑器 |
view | vi 的只读模式(等同于 vi -R) |
sed | 流编辑器,适合脚本化批量替换 |
diff | 对比文件差异 |
📝 总结
vi/vim 是 Linux 系统中 不可或缺的核心工具。虽然学习曲线陡峭,但一旦掌握其模式化编辑哲学和键盘快捷键,文本编辑效率将大幅提升。建议通过 vimtutor 命令进行 30 分钟的交互式练习。
💡 进阶提示:深入学习
.vimrc配置、插件管理(vim-plug)、代码补全(YouCompleteMe)等 vim 高级特性,可以将 vim 打造成媲美 IDE 的开发环境。
&spm=1001.2101.3001.5002&articleId=163946150&d=1&t=3&u=d90c65bf3ad0417498e251f1fd773dbb)
1458

被折叠的 条评论
为什么被折叠?



