游乐游手机版
首页/系统平台/文章详情

UNIX系统VI编辑器使用教程

时间:2026-06-18 07:43
vi 编辑器核心命令速查(完整指南) 文本编辑器是所有计算机系统中不可或缺的常用工具。在 UNIX 和 Linux 环境下,尽管存在 ex、sed 等众多编辑器,但 vi 无疑是人气最高、流传最久远的一款。vi 的命令体系较为庞杂,初学者往往感到无从下手。本文整理了一份 vi 三种模式下的核心命令速

vi 编辑器核心命令速查(完整指南)

文本编辑器是所有计算机系统中不可或缺的常用工具。在 UNIX 和 Linux 环境下,尽管存在 ex、sed 等众多编辑器,但 vi 无疑是人气最高、流传最久远的一款。vi 的命令体系较为庞杂,初学者往往感到无从下手。本文整理了一份 vi 三种模式下的核心命令速查表,帮助读者快速掌握 vi 的使用技巧,欢迎补充交流。

文本输入模式

在 vi 的文本输入模式下,操作逻辑非常直观:

  • a:在光标后插入(追加)文本
  • A:在当前行末尾追加文本
  • i:在光标前插入文本
  • o:在光标下方新建一行并进入插入模式

末行模式

末行模式(通过冒号 : 进入)是 vi 强大的命令控制中心:

  • :w:将缓冲区内容写入文件(保存),继续编辑
  • :w new_filename:将缓冲区内容另存为新文件 new_filename
  • :wq 或 ZZ:保存缓冲区内容后退出 vi
  • :q!:放弃所有修改,强制退出 vi
  • :wq!:强制保存缓冲区内容后退出(若为文件所有者,将忽略只读属性)
  • e!:撤销自上次保存以来所有未保存的修改
  • u:撤销最近一次编辑操作

命令模式(光标移动)

命令模式下,光标移动操作是日常使用频率最高的基础技能:

  • j(或向下箭头):向下移动一行
  • k(或向上箭头):向上移动一行
  • h(或向左箭头):向左移动一个字符
  • l(或向右箭头):向右移动一个字符
  • 空格:向右移动一个字符
  • w:向前移动一个单词(含标点)
  • b:向后移动一个单词(含标点)
  • $:移动到当前行行尾
  • 0(零)或 ^:移动到当前行行首
  • 回车:移动到下一行行首

编辑与删除操作(命令模式 & 末行模式)

编辑与删除操作是 vi 高效编辑的关键所在:

  • x(小写):删除光标位置处的字符
  • dw:删除当前单词(从光标处到单词末尾)
  • 3dw:删除从光标开始的三个单词
  • dd:删除光标所在的整行
  • 3dd:删除连续三行
  • yy:复制(拉出)当前行到剪贴板
  • p(小写):将剪贴板内容粘贴到当前行下方
  • P(大写):将剪贴板内容粘贴到当前行上方
  • :set nu:显示行号
  • :set nonu:隐藏行号
  • :set showmode:在屏幕底部显示当前操作模式
  • :set noshowmode:关闭模式显示
  • :set:显示所有 vi 变量及部分设置
  • :set all:显示所有 vi 变量及其当前值
  • G:跳转到文件的最后一行
  • :21:跳转到第 21 行
  • /string:从当前位置向后搜索字符串 string
  • ?string:从当前位置向前搜索字符串 string
  • n:重复上一次搜索(同方向)

Solaris vi 命令专篇

以下分类更加细化,适用于复杂编辑场景,尤其在 UNIX/Linux 服务器运维中非常实用。

进入 vi 的命令

  • vi filename:打开或新建文件,光标置于第一行首。
  • vi +n filename:打开文件,光标置于指定第 n 行首。
  • vi + filename:打开文件,光标置于最后一行首。
  • vi +/pattern filename:打开文件,光标置于第一个匹配 pattern 的字符串处。
  • vi -r filename:系统崩溃后恢复指定文件 filename 的编辑状态。
  • vi filename ... filename:同时打开多个文件,依次编辑。

光标移动类命令(补充)

  • h:左移一个字符
  • l:右移一个字符
  • space:右移一个字符
  • Backspace:左移一个字符
  • k 或 Ctrl+p:上移一行
  • j 或 Ctrl+n:下移一行
  • Enter:下移一行
  • w 或 W:右移到下一个单词的起始处
  • b 或 B:左移到上一个单词的起始处
  • e 或 E:右移到当前单词的结束处
  • ):光标移至当前句子的末尾
  • (:光标移至当前句子的开头
  • }:光标移至当前段落的开头
  • {:光标移至当前段落的结尾
  • nG:光标移至第 n 行行首
  • n+:光标向下移动 n 行
  • n-:光标向上移动 n 行
  • n$:光标移至第 n 行行尾
  • H:光标移至屏幕顶部行
  • M:光标移至屏幕中间行
  • L:光标移至屏幕底部行
  • 0:(数字零)光标移至当前行行首
  • $:光标移至当前行行尾

屏幕翻滚类命令

  • Ctrl+u:向文件开头方向翻滚半屏
  • Ctrl+d:向文件末尾方向翻滚半屏
  • Ctrl+f:向文件末尾方向翻滚一屏
  • Ctrl+b:向文件开头方向翻滚一屏
  • nz:将第 n 行移至屏幕顶部(不指定 n 则默认当前行)

文本插入与替换类命令

  • i:在光标前插入文本
  • I:在当前行行首插入文本
  • a:在光标后插入文本
  • A:在当前行行尾插入文本
  • o:在当前行下方新建一行并进入插入模式
  • O:在当前行上方新建一行并进入插入模式
  • r:替换光标处的一个字符(替换后返回命令模式)
  • R:连续替换字符,直到按下 ESC 键
  • s:从光标位置开始替换指定数目的字符
  • S:删除指定行数并用输入内容替换
  • ncw 或 nCW:修改指定数目的单词
  • nCC:修改指定数目的行

删除命令(二)

  • ndw 或 ndW:删除从光标开始向右的 n 个单词
  • do:删除从光标到当前行首
  • d$:删除从光标到当前行尾
  • ndd:删除当前行及其后的 n-1 行
  • x 或 X:删除一个字符(x 删除光标后字符,X 删除光标前字符)
  • Ctrl+u:在插入模式下删除刚刚输入的文本

搜索与替换命令

  • /pattern:从光标位置向文件末尾搜索 pattern
  • ?pattern:从光标位置向文件开头搜索 pattern
  • n:沿同一方向重复上一次搜索
  • N:沿反方向重复上一次搜索
  • :s/p1/p2/g:将当前行中所有 p1 替换为 p2
  • :n1,n2s/p1/p2/g:将第 n1 至 n2 行内所有 p1 替换为 p2
  • :g/p1/s//p2/g:将整个文件中所有 p1 全局替换为 p2

选项设置

  • all:列出所有选项的当前设置情况
  • term:设置终端类型
  • ignorance:搜索时忽略大小写
  • list:显示制表符(Ctrl+I)和行尾符号($)
  • number:显示行号
  • report:显示由行操作命令所影响的文本行数
  • terse:显示简短的警告信息
  • warn:切换到其他文件时若未保存当前文件则给出提示
  • nomagic:允许在搜索模式中使用特殊字符而未加反斜杠转义
  • nowrapscan:禁止 vi 在搜索到文件两端时自动从另一端继续
  • mesg:允许 vi 显示其他用户通过 write 发送到终端的消息

最后行方式命令

  • :n1,n2 co n3:将第 n1 到 n2 行的内容复制到第 n3 行下方
  • :n1,n2 m n3:将第 n1 到 n2 行的内容移动到第 n3 行下方
  • :n1,n2 d:删除第 n1 到 n2 行之间的内容
  • :w:保存当前文件
  • :e filename:打开文件 filename 进行编辑
  • :x:保存当前文件并退出 vi
  • :q:退出 vi
  • :q!:强制退出 vi(不保存)
  • :!command:执行 shell 命令 command
  • :n1,n2 w!command:将第 n1 到 n2 行的内容作为命令 command 的标准输入并执行(不指定范围则使用整个文件)
  • :r!command:将 shell 命令 command 的输出结果插入到当前光标行下方

寄存器操作

  • "?nyy:将当前行及其下方 n 行复制到寄存器 ? 中(? 为字母,n 为数字)
  • "?nyw:将当前行及其下方 n 个单词复制到寄存器 ? 中
  • "?nyl:将当前行及其下方 n 个字符复制到寄存器 ? 中
  • "?p:将寄存器 ? 中的内容粘贴到光标位置(? 可以是字母或数字)
  • ndd:删除当前行及其下方共 n 行,并将删除内容放入 1 号删除寄存器中。
来源:https://www.jb51.net/os/Unix/1564.html
上一篇FreeBSD数据迁移完整操作指南 下一篇UNIX系统正确关机操作步骤与命令
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
微软详解Win11时间点还原 默认每24小时创建恢复点
系统平台 · 2026-06-30

微软详解Win11时间点还原 默认每24小时创建恢复点

微软今日推送了最新的 6 月可选更新,并发布博客详细解读了 Win11 全新的“时间点还原”(Point-in-time restore)功能——这一功能本质上是对系统恢复体验的一次全面升级,旨在让用户更轻松地应对电脑故障。 微软表示,面向 Windows 11 客户端用户的“时间点还原”功能现已正

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验
系统平台 · 2026-06-30

Win11 26H1六月可选更新KB5095091 优化放大镜改善装机体验

微软今天推送了Windows 11 26H1设备的6月可选更新KB5095091,安装完成后系统版本号会升级到Build 28000 2340。值得一提的是,这次更新并非面向所有设备,而是专门为搭载高通骁龙X2系列芯片的机型准备的——包括骁龙X2 Plus、X2 Elite和X2 Elite Ext

Win11六月可选更新KB5095093修复回收站弹窗异常
系统平台 · 2026-06-30

Win11六月可选更新KB5095093修复回收站弹窗异常

微软已悄然推送Windows 11六月可选更新,编号KB5095093。本次更新覆盖两个版本:24H2用户安装后版本号升级至Build 26100 8737,而25H2用户则更新至Build 26200 8737。 本次更新并非仅是小修小补,而是带来了多项实质性新功能。下面我们就来详细解析这些更新内

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞
系统平台 · 2026-06-30

苹果macOS 27 Beta2封堵Siri AI跳过候补名单漏洞

科技媒体 Cult of Mac 昨日(6月23日)发布博文指出,苹果在 macOS 27 Beta 2 更新中悄然封堵了一个此前可用的后门——用户曾能通过一条终端命令绕过候补名单,直接启用新版 Siri AI,如今这一方法已失效。 简要回顾一下:在 macOS 27 Beta 1 阶段,只需在 M

微软加速Win11 25H2推送 覆盖所有符合条件家用PC
系统平台 · 2026-06-30

微软加速Win11 25H2推送 覆盖所有符合条件家用PC

近日(6月23日),科技媒体 Windows Latest 发布了一则值得关注的动态:微软已进一步扩大 Windows 11 25H2 的推送范围,所有满足硬件要求、且不受 IT 部门管理的家庭版和专业版设备,现在均可顺利接收本次更新。 此次升级有一个显著特点——采用“启用包”(eKB)方式进行推送