news 2026/8/22 6:43:31

Linux命令-vi(经典终端文本编辑器)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux命令-vi(经典终端文本编辑器)

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.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!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
  • 系统文件编辑使用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 的开发环境。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 6:42:35

JavaScript实战:从零构建ATM机模拟程序,掌握函数封装与状态管理

1. 项目概述&#xff1a;用JavaScript函数模拟一个真实的ATM机如果你正在学习JavaScript&#xff0c;或者想找个项目来巩固函数、对象和状态管理的概念&#xff0c;模拟一个ATM机取款机绝对是个绝佳的选择。这听起来像是个简单的练习&#xff0c;但真要把它做得像模像样&#x…

作者头像 李华
网站建设 2026/8/22 6:42:13

3步测出鼠标真实性能:MouseTester 免费鼠标性能测试工具使用指南

3步测出鼠标真实性能&#xff1a;MouseTester 免费鼠标性能测试工具使用指南 【免费下载链接】MouseTester 项目地址: https://gitcode.com/gh_mirrors/mo/MouseTester MouseTester 是一款免费开源的鼠标性能测试工具。它绕过系统鼠标加速&#xff0c;直接读取传感器上…

作者头像 李华
网站建设 2026/8/22 6:39:57

AI漫剧制作工具本地部署指南:从文生图到视频生成全流程实践

这次我们来看一个名为“星月梦”的AI漫剧制作工具。它不是一个复杂的学术模型&#xff0c;而是一个面向内容创作者的本地化工具&#xff0c;核心目标是让用户能够相对轻松地制作出带有漫画风格的AI视频或“漫剧”。对于想尝试AI视频生成&#xff0c;又不想被复杂代码和极高硬件…

作者头像 李华
网站建设 2026/8/22 6:38:40

MobiFlow:构建真实世界移动智能体评测基准的实践与思考

1. 项目概述&#xff1a;为什么我们需要一个“真实世界”的移动智能体评测标准&#xff1f;如果你在过去一年里关注过AI智能体&#xff08;Agent&#xff09;领域&#xff0c;尤其是那些号称能“操控手机”完成任务的智能体&#xff0c;你可能会和我有一样的困惑&#xff1a;看…

作者头像 李华
网站建设 2026/8/22 6:36:06

第一人称AI助手:智能眼镜与LLM融合的架构设计与实现

1. 项目概述&#xff1a;从“第一人称”视角重新定义AI助手最近在AI和可穿戴设备圈子里&#xff0c;一个概念被反复提及&#xff1a;Egocentric AI&#xff0c;或者说“以自我为中心的AI”。这听起来有点哲学意味&#xff0c;但它的内核其实非常务实——它指的是从佩戴者自身的…

作者头像 李华
网站建设 2026/8/22 6:35:50

大规模竞赛评审方案建模:多目标优化与分数校正实战

1. 从评审困境到解题思路&#xff1a;一次大规模竞赛的建模实战每年一到研究生数学建模竞赛&#xff0c;尤其是C题这种涉及复杂系统优化和方案设计的题目&#xff0c;总能引发一波讨论热潮。2023年的C题“大规模创新类竞赛评审方案研究”&#xff0c;光看题目就知道&#xff0c…

作者头像 李华