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
  • 系统文件编辑使用 sudoeditsudo -e 更安全
  • vimtutor(vimtutor 命令)是官方新手教程,推荐所有初学者运行

📚 相关命令

命令关系与说明
vimvi 的增强版本,支持语法高亮、插件等
vimdiff使用 vim 对比文件差异(vim -d file1 file2
vimtutorvim 官方交互式教程
nano更简单的终端文本编辑器,适合新手
emacs另一个强大的终端编辑器
viewvi 的只读模式(等同于 vi -R
sed流编辑器,适合脚本化批量替换
diff对比文件差异

📝 总结

vi/vim 是 Linux 系统中 不可或缺的核心工具。虽然学习曲线陡峭,但一旦掌握其模式化编辑哲学和键盘快捷键,文本编辑效率将大幅提升。建议通过 vimtutor 命令进行 30 分钟的交互式练习。

💡 进阶提示:深入学习 .vimrc 配置、插件管理(vim-plug)、代码补全(YouCompleteMe)等 vim 高级特性,可以将 vim 打造成媲美 IDE 的开发环境。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RisunJan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值