会话定制
我们可以通过为会话设置变量来自定义 vi 会话。
设置变量时,我们启用了默认情况下未激活的功能。
我们可以使用 set 命令启用和禁用变量。
set 命令变量包括显示行号和不可见字符,例如制表符和行尾字符。
要为所有 vi 会话创建自动自定义,请执行以下步骤:
- 在主目录中创建一个名为 .exrc 的文件。
- 将任何设置的变量输入到 .exrc 文件中。
- 输入不带冒号的每个设置变量。
- 在一行中输入每个命令。
每次打开 vi 会话时,vi 编辑器都会读取位于主目录中的 .exrc 文件,而不管我们当前的工作目录如何。
注意:相同的步骤适用于在 Vim 编辑器中自定义会话。
除此之外,我们需要创建一个 .vimrc 文件,而不是创建 .exrc 文件。
保存和退出命令
该表描述了保存文本文件、退出 vi 编辑器并返回到 shell 提示符的命令。
命令 | 作用 |
---|---|
:w | 通过写入磁盘保存更改后的文件 |
:w new_filename | 将缓冲区的内容写入 new_filename |
:wq | 保存更改后的文件并退出 vi 编辑器 |
:x | 保存更改后的文件并退出 vi 编辑器 |
ZZ | 保存更改后的文件并退出 vi 编辑器 |
:q! | 退出而不保存更改 |
ZQ | 退出而不保存更改 |
以只读模式查看文件
view 命令使我们能够以只读模式查看文件。
$ view filename
view 命令在只读选项中调用 vi 编辑器,这意味着我们无法保存对文件的更改。
例如以只读方式查看data.txt文件,输入以下命令:
$ view data.txt
出现 data.txt 文件。
输入:q 命令退出文件,退出vi 编辑器,返回shell 提示符。
编辑命令
该表描述了在 vi 编辑器中更改文本、撤消更改和重复编辑功能的命令。
命令 | 作用 |
---|---|
cw | 将光标位置的字符更改或者覆盖到该单词的末尾 |
r | 用另一个字符替换光标处的字符 |
J | 连接当前行和下面的行 |
xp | 调换光标处的字符和光标右侧的字符 |
~ | 在光标处将字母大小写更改为大写或者小写 |
u | 撤销之前的命令 |
U | 撤消对当前行的所有更改 |
. | 重复上一条命令 |
注意:其中许多命令将 vi 编辑器更改为输入模式。
要返回命令模式,请按 Esc 键。
访问 vi 编辑器
要在 vi 编辑器中创建、编辑和查看文件,请使用 vi 命令。
vi 命令包括以下三种语法:
$ vi $ vi filename $ vi options filename
如果在我们编辑文件时系统崩溃,我们可以使用 -r 选项来恢复文件。
$ vi -r filename
该文件将打开,以便我们可以对其进行编辑。
然后,我们可以使用以下命令保存文件并退出 vi 编辑器:
$ vi -R filename
该文件以只读模式打开,以防止意外覆盖文件内容。
插入和添加文本
该表描述了使用 vi 编辑器将文本插入和添加到新文件或者现有文件的命令。
命令 | 作用 |
---|---|
a | 在光标后追加文本 |
A | 在行尾追加文本 |
i | 在光标前插入文本 |
I | 在行首插入文本 |
o | 在光标下方打开一个新行 |
O | 在光标上方打开一个新行 |
:r filename | 将另一个文件中的文本插入当前文件 |
注意:vi 编辑器区分大小写。
对输入命令使用适当的大小写。
此外,大多数输入命令和光标移动都可以在前面加上一个数字来重复该命令多次。
会话自定义命令
该表描述了 set 命令的一些变量。
命令 | 作用 |
---|---|
:set nu | 显示行号 |
:set nonu | 隐藏行号 |
:set ic | 指示搜索忽略大小写 |
:set noic | 指示搜索区分大小写 |
:set noic | 显示不可见字符,例如 ^I 表示制表符,$ 表示行尾字符 |
:set nolist | 关闭不可见字符的显示 |
:set showmode | 显示当前操作模式 |
:set noshowmode | 关闭操作模式显示 |
:set | 显示所有设置的 vi 变量 |
:set all | 显示所有 vi 变量及其当前值 |
在模式之间切换
vi 编辑器的默认模式是命令模式。
要切换到输入模式,请按 i、o 或者 a。
要返回命令模式,请按 Escape 键。
在命令模式下,我们可以保存文件并退出 vi 编辑器,并返回到 shell 提示符。
文本删除命令
该表显示了在 vi 编辑器中删除文本的命令。
命令 | 作用 |
---|---|
R | 覆盖或者替换光标右侧行上的字符。要终止此操作,请按 Escape。 |
C | 更改或者覆盖从光标到行尾的字符 |
s | 用字符串替换光标处的字符 |
x | 删除光标处的一个字符 |
dw | 删除光标右侧的一个词或者部分词 |
dd | 删除包含光标的行 |
D | 删除从光标到行右端的行 |
:n,nd | 删除第 n -n 行(例如,:5,10d 删除第 5-10 行。) |
注意:删除命令的输出写入可以从中检索文本的缓冲区。
我们可以使用多种命令通过 vi 编辑器来编辑文件。
以下部分介绍删除、更改、替换、复制和粘贴的基本操作。
请记住,vi 编辑器区分大小写。
在 vi 编辑器中移动光标
下表显示了移动光标的按键序列。
按键序列 | 光标移动 |
---|---|
h, left arrow, or Backspace | 左一个字符 |
j or down arrow | 下一行 |
k or up arrow | 向上一行 |
l, right arrow, or space bar | 右(向前)一个字符 |
w | 转发一个字 |
b | 回一字 |
e | 到当前单词的结尾 |
$ | 到行尾 |
0 (zero) | 到行首 |
^ | 到行上的第一个非空白字符 |
Return | 向下到下一行的开头 |
G | 转到文件的最后一行 |
1G | 转到文件的第一行 |
:n | 转到第 n 行 |
nG | 转到第 n 行 |
Control + F | 向前翻一屏 |
Control + D | 向下滚动一半屏幕 |
Control + B | 翻页一屏 |
Control + U | 向上滚动一半屏幕 |
Control + L | 刷新屏幕 |
Control + G | 显示当前缓冲区信息 |
搜索和替换命令
该表显示了在 vi 编辑器中搜索和替换文本的命令。
命令 | 作用 |
---|---|
/string | 向前搜索字符串 |
?string | 向后搜索字符串 |
n | 搜索下一次出现的字符串。搜索字符串后使用此命令。 |
N | 搜索上一次出现的字符串。搜索字符串后使用此命令。 |
:%s/old/new/g | 搜索旧字符串并全局替换为新字符串 |
vi 编辑器模式
vi 编辑器提供三种操作模式:
命令模式——命令模式是 vi 编辑器的默认模式。
在此模式下,我们可以运行命令来删除、更改、复制和移动文本。
我们还可以定位光标、搜索文本字符串以及退出 vi 编辑器。输入模式——我们可以在输入模式下将文本插入到文件中。
vi 编辑器将我们在输入模式下输入的所有内容解释为文本。
要调用输入模式,请按以下小写键之一:
- i – 在光标前插入文本
- o – 在光标下方打开一个新的空行
- a – 在光标后添加文本
我们还可以通过按以下大写键之一来调用输入模式以将文本插入到文件中:
- I - 在行首插入文本
- O - 在光标上方打开一个新的空行
- A – 在行尾添加文本
- 最后一行模式 - 我们可以在最后一行模式下使用高级编辑命令。
要访问最后一行模式,请在命令模式下输入冒号 (:)。
输入冒号 (:) 字符会将光标置于屏幕的底行。
注意:最后一行模式实际上是ex模式。
vi 编辑器本质上是 ex 编辑器的可视化扩展,ex 编辑器又是 ed 编辑器的扩展版本。
vi 编辑器是一个命令行交互式编辑器,可用于创建和修改文本文件。
vi 编辑器也是唯一可以用来编辑某些系统文件而不更改文件权限的文本编辑器。
Vim 编辑器是 vi 编辑器的增强版本。
复制和粘贴命令
该表显示了在 vi 编辑器中剪切、复制和粘贴文本的命令。
命令 | 作用 |
---|---|
yy | 拉取一行的副本 |
p | 在包含光标的行下放置猛拉或者删除的文本 |
P | 在包含光标的行之前放置猛拉或者删除的文本 |
:n,n co n | 复制第 n -n 行并将它们放在第 n 行之后(例如,:1,3 co 5 复制第 1-3 行并将它们放在第 5 行之后。) |
:n,n m n | 将第 n -n 行移动到第 n 行。例如:4,6 m 8 将第 4-6 行移动到第 8 行,第 6 行变为第 8 行,第 5 行变为第 7 行,第 4 行变为第 6 行。 |