商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > UNIX下VI编辑器使用

UNIX下VI编辑器使用

  发布于2026-06-02 阅读(0)

扫一扫,手机访问

vi 编辑器核心命令速查

文本编辑器几乎是所有计算机系统里最常用的工具了。在 UNIX 环境下,编辑器有不少,比如 ex、sed,但用的人最多、流传最广的还得是 vi。vi 的命令确实繁杂,很多人刚上手时会觉得无从下手。下面这份整理涵盖了 vi 在三种模式下的核心命令,希望能帮大家快速上手,也欢迎补充指正。

文本输入模式

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

  • a:在光标后追加文本
  • A:在行末追加文本
  • i:在光标前插入文本
  • o:在光标下方新开一行

末行模式

末行模式(按 : 进入)是 vi 强大的命令中心:

  • :w:写缓冲区,保存更改,继续在 vi 中工作
  • :w new_filename:把缓冲区内容写入新文件 new_filename
  • :wq 或 ZZ:写缓冲区,保存修改,然后退出 vi
  • :q!:不保存修改,强制退出
  • :wq!:写缓冲区,保存修改后强制退出 vi(如果你是文件所有者,会忽略只读属性)
  • 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 命令专篇

以下是一些更细分的命令集,尤其适用于更复杂的编辑场景。

进入 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:在转到别的文件时若没保存当前文件则显示 NO write 信息
  • 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:保存当前文件并退出
  • :q:退出 vi
  • :q!:不保存文件并强制退出
  • :!command:执行 shell 命令 command
  • :n1,n2 w!command:将 n1 到 n2 行的内容作为 command 的输入并执行(若不指定范围,则用整个文件内容)
  • :r!command:将 command 命令的输出结果放到当前行

寄存器操作

  • "?nyy:将当前行及其下 n 行的内容保存到寄存器 ? 中(? 为字母,n 为数字)
  • "?nyw:将当前行及其下 n 个字保存到寄存器 ? 中
  • "?nyl:将当前行及其下 n 个字符保存到寄存器 ? 中
  • "?p:取出寄存器 ? 中的内容放到光标位置处(? 可以是字母或数字)
  • ndd:将当前行及其下共 n 行文本删除,并将删除内容放到 1 号删除寄存器中。
本文转载于:https://www.jb51.net/os/Unix/1564.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注