菜鸟科技网

vi命令模式有哪些核心操作?

vi 编辑器是 Linux 和 Unix 系统中最常用的文本编辑器之一,其强大的功能和灵活的操作方式深受开发者和系统管理员的喜爱,vi 编辑器的工作模式主要分为三种:命令模式(Command Mode)、插入模式(Insert Mode)和末行模式(Last Line Mode),命令模式是 vi 编辑器的核心模式,用户在进入 vi 编辑器时默认处于命令模式,此时不能直接输入文本,而是通过一系列命令来完成文本的编辑操作,掌握命令模式的使用是高效使用 vi 编辑器的基础。

vi命令模式有哪些核心操作?-图1
(图片来源网络,侵删)

在命令模式下,用户可以通过按键组合实现对光标的移动、文本的删除、复制、粘贴、查找替换等操作,光标移动是命令模式中最基本的操作,常用的光标移动命令包括:h(左移一个字符)、j(下移一行)、k(上一行)、l(右移一个字符),这四个键构成了 vi 编辑器的光标移动基础,类似于方向键的功能,还有更高效的光标移动方式,w(移动到下一个单词的开头)、b(移动到当前单词的开头)、e(移动到当前单词的结尾)、0(数字零,移动到行首)、(移动到行尾)、G(移动到文件的最后一行)、nG(移动到文件的第 n 行,10G 移动到第 10 行)、gg(移动到文件的第一行),这些光标移动命令的熟练使用可以大大提高编辑效率,尤其是在处理大文件时,无需依赖鼠标即可快速定位到目标位置。

文本删除是命令模式中的另一个重要功能,常用的删除命令包括:x(删除当前光标所在处的字符)、nx(删除从当前光标开始的 n 个字符,3x 删除 3 个字符)、X(删除当前光标前的一个字符)、dd(删除当前整行)、ndd(删除当前行及后续的 n-1 行,5dd 删除 5 行)、d$(删除从当前光标到行尾的内容)、d0(删除从当前光标到行首的内容)、dw(删除一个单词)、dG(删除从当前行到文件末尾的所有内容),删除操作会将删除的内容暂存到 vi 的剪贴板中,可以使用粘贴命令进行恢复。

复制和粘贴命令也是命令模式中常用的操作,vi 编辑器通过 y(yank,复制)命令实现文本的复制,p(put,粘贴)命令实现文本的粘贴,常用的复制命令包括:yy(复制当前整行)、nyy(复制当前行及后续的 n-1 行)、yw(复制一个单词)、y$(复制从当前光标到行尾的内容)、y0(复制从当前光标到行首的内容),粘贴命令 p 用于将剪贴板中的内容粘贴到当前光标的后面,而 P 命令则将内容粘贴到当前光标的前面,需要注意的是,复制和删除操作都会使用同一个剪贴板,因此如果进行了删除操作后直接粘贴,实际上是将删除的内容移动到目标位置。

查找和替换功能在文本编辑中非常实用,vi 编辑器在命令模式下提供了强大的查找和替换命令,查找命令为 (正向查找)和 (反向查找),例如在命令模式下输入 /keyword,然后按回车键,vi 会从当前光标位置开始向下查找第一个匹配的 keyword,按 n 键查找下一个匹配项,按 N 键查找上一个匹配项,替换命令需要在末行模式下执行,但可以通过命令模式进入末行模式,例如在命令模式下输入 s/old/new,表示替换当前行中第一个匹配的 oldnews/old/new/g 表示替换当前行中所有匹配的 oldnew%s/old/new/g 表示替换整个文件中所有匹配的 oldnew,在进行替换操作时,可以添加 c 选项以确认每次替换,%s/old/new/gc 会在每次替换前提示用户确认。

vi命令模式有哪些核心操作?-图2
(图片来源网络,侵删)

除了上述基本操作外,命令模式还提供了一些其他实用的命令。u(撤销上一步操作)、Ctrl + r(重做被撤销的操作)、i(进入插入模式,在当前光标前插入文本)、a(进入插入模式,在当前光标后插入文本)、o(在当前行下方插入一个新行并进入插入模式)、O(在当前行上方插入一个新行并进入插入模式)、r(替换当前光标所在处的字符,按 r 后再按目标字符即可)、R(进入替换模式,连续替换多个字符,按 Esc 退出)、(切换当前光标所在处字符的大小写)、J(将当前行与下一行合并为一行),这些命令虽然简单,但在日常编辑中可以大大提高操作效率。

为了更清晰地展示 vi 编辑器命令模式中常用命令的分类和功能,以下表格总结了部分核心命令:

命令分类 命令 功能描述
光标移动 h, j, k, l 左移、下移、上移、右移一个字符
w, b, e 移动到下一个单词开头、当前单词开头、当前单词结尾
0, $ 移动到行首、行尾
G, gg 移动到文件末尾、文件开头
nG 移动到第 n 行
文本删除 x, nx 删除当前字符、删除 n 个字符
X 删除当前光标前一个字符
dd, ndd 删除当前行、删除 n 行
d0, d$ 删除到行首、删除到行尾
dw, dG 删除一个单词、删除到文件末尾
复制粘贴 yy, nyy 复制当前行、复制 n 行
yw, y$, y0 复制一个单词、复制到行尾、复制到行首
p, P 粘贴到光标后、粘贴到光标前
查找替换 /keyword 正向查找 keyword
?keyword 反向查找 keyword
s/old/new 替换当前行第一个 old 为 new
s/old/new/g 替换当前行所有 old 为 new
%s/old/new/g 替换整个文件所有 old 为 new
其他操作 u, Ctrl+r 撤销、重做
i, a, o, O 进入插入模式(光标前、光标后、下方新行、上方新行)
r, R 替换当前字符、进入替换模式
切换当前字符大小写
J 合并行

熟练掌握 vi 编辑器命令模式的命令需要大量的练习,初学者可能会觉得命令繁多且难以记忆,但通过理解命令的逻辑和规律,例如以 d 开头的命令多与删除相关,以 y 开头的命令多与复制相关,可以更快地掌握这些命令,在实际使用中,建议用户多结合具体场景进行练习,例如编辑配置文件、编写脚本等,逐步将命令内化为肌肉记忆,从而提高文本编辑的效率。

相关问答 FAQs:

vi命令模式有哪些核心操作?-图3
(图片来源网络,侵删)
  1. 问:在 vi 编辑器的命令模式下,如何快速跳转到文件的特定行号? 答:在命令模式下,可以使用 nG 命令快速跳转到文件的第 n 行,例如输入 50G 后按回车键,光标会移动到第 50 行,如果需要跳转到文件开头,可以使用 gg 命令;跳转到文件末尾,可以使用 G 命令(注意 G 前无需数字)。

  2. 问:在 vi 编辑器中,如何删除从当前光标到文件末尾的所有内容? 答:在命令模式下,将光标移动到目标行的起始位置,然后输入 dG 命令即可删除从当前行到文件末尾的所有内容,如果当前光标在第 10 行,输入 dG 后,第 10 行及之后的所有行都会被删除。

分享:
扫描分享到社交APP
上一篇
下一篇