Linux命令-vi(经典终端文本编辑器)
- 🔰 命令简介
- 📖 语法格式
- ⚙️ 常用选项
- 💡 实战示例
- 1. 基本文件操作
- 2. 移动与导航(普通模式)
- 3. 插入与编辑
- 4. 撤销与重做
- 5. 搜索与替换
- 6. 可视模式操作
- 7. 保存、退出与文件操作
- 8. 多窗口与标签页
- 9. 实用外部命令集成
- 10. 配置与自定义
- ⚠️ 危险操作与注意事项
- 📚 相关命令
- 📝 总结
快速参考:vi是 Linux/Unix 系统预装的经典终端文本编辑器,拥有模式化编辑哲学,是所有系统管理员的必备技能。现代系统中vi通常是vim(Vi Improved)的符号链接。
🔰 命令简介
vi(Visual Editor)诞生于 1976 年,由 Bill Joy 开发,是 Unix 世界中使用最广泛的文本编辑器。其核心设计理念是模式化编辑——将文本浏览与文本编辑分离,通过键盘快捷键实现高效操作。
💡重要提示:现代 Linux 发行版中,
vi命令通常链接到vim(Vi IMproved),后者提供了语法高亮、多级撤销、插件系统等增强功能。学习vi实际上是学习vim的基础操作。
vim 有四种基本模式:
| 模式 | 进入方式 | 用途 |
|---|---|---|
| 普通模式 | 默认模式 / 按Esc | 浏览文本、执行命令 |
| 插入模式 | iaoO等 | 输入文本 |
| 可视模式 | vVCtrl+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 切换)vifile1.txt file2.txt file3.txt# 以只读模式打开vi-Rimportant.conf# 跳到第 100 行打开vi+100 /var/log/syslog# 跳到包含 "error" 的行vi+/error /var/log/syslog# 恢复上次异常退出的文件vi-r# 恢复指定交换文件vi-r.notes.txt.swp2. 移动与导航(普通模式)
# 基本方向移动(替代方向键)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!sudotee%# 以 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# 隐藏行号:settabstop=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 的开发环境。