VI 文本编辑器¶
在本章中,您将学习如何使用 VIsual 编辑器。
目标:在本章中,未来的 Linux 管理员将学会如何
使用 VI 编辑器的主要命令;
使用 VI 编辑器修改文本。
用户命令,Linux
知识:
复杂度:
阅读时间: 20 分钟
Visual (VI) 是 Linux 下一款流行的文本编辑器,尽管其人体工程学设计有限。它确实是一个完全在文本模式下的编辑器:每个操作都通过键盘按键或专用命令完成。
功能非常强大,而且非常实用,因为它对于基本应用程序来说总体上是最小化的。因此,在系统出现故障时也可以访问。它的通用性(存在于所有 Linux 发行版和 Unix 系统上)使其成为管理员至关重要的工具。
它的功能包括
- 插入、删除和修改文本;
- 复制单词、行或文本块;
- 搜索和替换字符。
vi
命令¶
vi
命令打开 VI 文本编辑器。
vi [-c command] [file]
示例
vi /home/rockstar/file
选项 | 信息 |
---|---|
-c 命令 |
指定一个命令在打开时执行 VI |
如果文件存在于路径所指示的位置,VI 会读取它并将其置于命令模式。
如果文件不存在,VI 会打开一个空白文件,在屏幕上显示一个空页面。保存文件时,它将采用命令指定的名称。
如果 vi
命令在未指定文件名的情况下执行,VI 会打开一个空白文件并在屏幕上显示一个空页面。保存文件时,VI 会要求输入文件名。
vim
编辑器继承了 VI 的界面和功能,并进行了许多改进。
vim [-c command] [file]
在这些改进中,用户拥有语法高亮,这对于编辑 shell 脚本或配置文件非常有用。
在会话期间,VI 使用缓冲区文件来记录用户的所有更改。
注意
在用户保存工作之前,原始文件不会被修改。
启动时,VI 处于命令模式。
技巧
一行文本在按 Enter 键后结束,但如果屏幕不够宽,VI 会自动换行,默认配置为换行。这些自动换行可能不符合要求,这就是不换行配置。
要从命令模式退出 VI,请按 :,然后输入
q
退出而不保存(quit);w
保存您的工作(write);wq
(write quit)或x
(eXit)保存并退出。
在命令模式下,连续按两次大写 Z 键即可保存并退出。
您必须在上述命令后添加!以强制退出而不确认。
警告
没有定期备份,因此您必须记住定期保存工作。
操作模式¶
在 VI 中,有 3 种工作模式
- 命令模式;
- 插入模式;
- ex 模式。
VI 的理念是在命令模式和插入模式之间交替进行。
第三种模式,ex 模式,是从旧文本编辑器继承的底部命令模式。
命令模式¶
这是 VI 启动时的默认模式。要从任何其他模式访问它,只需按 Esc 键。
此时,所有键盘输入都被解释为命令,并执行相应的操作。这些主要是用于编辑文本的命令(复制、粘贴、撤销等)。
命令不会显示在屏幕上。
插入模式¶
这是文本修改模式。要从命令模式访问它,您必须按下特殊键,这些键在执行操作的同时还会改变模式。
文本不是直接输入到文件中,而是输入到内存中的缓冲区区域。更改只有在保存文件后才生效。
Ex 模式¶
这是文件修改模式。要访问它,您必须首先切换到命令模式,然后输入ex 命令,该命令通常以字符:
开头。
通过按 Enter 键可以验证命令。
移动光标¶
在命令模式下,有几种方法可以移动光标。
鼠标在文本环境中不活动,但在图形环境中,可以逐个字符地移动它,但存在快捷键可以更快地进行。
移动光标后,VI 仍处于命令模式。
光标放置在目标字符下方。
相对于字符¶
- 向左移动一个或
n
个字符
左、n 左、h 或 n h
- 向右移动一个或
n
个字符
右、n 右、l 或 n l
- 向上移动一个或
n
个字符
上、n 上、k 或 n k
- 向下移动一个或
n
个字符
下、n 下、j 或 n j
- 移动到行尾
$ 或 End
- 移动到行首
0 或 Home
相对于单词的第一个字符¶
单词由字母或数字组成。标点符号和撇号分隔单词。
如果光标在单词中间,w 会移到下一个单词,b 会移到单词的开头。
如果到达行尾,VI 会自动移到下一行。
- 向右移动一个或
n
个单词
w 或 n w
- 向左移动一个或
n
个单词
b 或 n b
相对于行中的任意位置¶
- 移动到文本的最后一行
G
- 移动到第
n
行
n G
- 移动到屏幕的第一行
H
- 移动到屏幕的中间行
M
- 移动到屏幕的最后一行
L
- 移动到文件内容的起始行
g g
插入文本¶
在命令模式下有几种插入文本的方法。
输入其中一个键后,VI 会切换到插入模式。
注意
VI 会切换到插入模式。因此,您需要按 Esc 键返回命令模式。
相对于字符¶
- 在字符前插入文本
i(insert)
- 在字符后插入文本
a(append)
相对于行¶
- 在行首插入文本
I
- 在行尾插入文本
A
相对于文本¶
- 在行前插入文本
O
- 在行后插入文本
o
字符、单词和行¶
VI 通过管理来允许文本编辑
- 字符,
- 单词,
- 行。
在每种情况下都可以
- 删除,
- 替换,
- 复制,
- 剪切,
- 粘贴。
这些操作在命令模式下完成。
字符¶
- 删除一个或
n
个字符
x 或 n x
- 用一个字符替换另一个字符
r+字符
- 用多个字符替换多个字符
R+字符+Esc
注意
R 命令切换到替换模式,这是一种插入模式。
单词¶
- 删除(剪切)一个或
n
个单词
d+w 或 n+d+w
- 复制一个或
n
个单词
y+w 或 n+y+w
- 在光标后粘贴一个或
n
次单词
p 或 n+p
- 在光标前粘贴一个或
n
次单词
P 或 n+P
- 替换一个单词
c+w+单词+Esc
技巧
必须将光标定位在要剪切(或复制)的单词的第一个字符下方,否则 VI 只会剪切(或复制)光标与单词末尾之间的部分。删除一个单词就是剪切它。如果之后不粘贴,缓冲区将清空,单词将被删除。
行¶
- 删除(剪切)一行或
n
行
d+d 或 n+d+d
- 复制一行或
n
行
y+y 或 n+y+y
- 在当前行之后粘贴复制或删除的内容一次或
n
次
p 或 n+p
- 在当前行之前粘贴复制或删除的内容一次或
n
次
P 或 n+P
- 删除(剪切)从行首到光标的内容
d+0
- 删除(剪切)从光标到行尾的内容
d+$
- 复制从行首到光标的内容
y+0
- 复制从光标到行尾的内容
y+$
- 删除(剪切)从当前行到文件最后一行的内容
d+G
- 删除(剪切)从当前行到屏幕最后一行的内容
d+L
- 复制从当前行到文件末尾的内容
y+G
- 复制从当前行到屏幕末尾的内容
y+L
取消操作¶
- 撤销上一次操作
u
- 撤销当前行的操作
U
取消撤销¶
- 取消撤销
Ctrl+R
EX 命令¶
Ex 模式允许您对文件进行操作(保存、布局、选项等)。搜索和替换命令也是在Ex 模式下输入的。命令显示在页面底部,并且必须通过 Enter 键进行验证。
要从命令模式切换到Ex 模式,请键入 :。
文件行号¶
- 显示/隐藏编号
:set nu
或更长的 :set number
:set nonu
或更长的 :set nonumber
搜索字符串¶
- 从光标处搜索字符串
/字符串
- 在光标前搜索字符串
?字符串
- 查找下一个匹配的字符串
n
- 查找上一个匹配的字符串
N
VI 中有正则表达式可以方便搜索。
[]
:搜索一个字符范围或一个具有指定可能值的单个字符。
示例
/[Ww]ord
:搜索 word 或 Word
/[1-9]word
:搜索 1word、2word…x
word,其中 x
是一个数字
^
:搜索以字符开头的行。
示例
/^Word
$
:搜索以字符结尾的行。
示例
/Word$
.
:搜索除换行符外的任何单个字符。
示例
/W.rd
:搜索 Word、Ward 等。
*
:前一个字符匹配的次数,0 次或任意次数。
示例
/W*d
注意: 如果您想在匹配字符串时忽略大小写(临时),请键入 :set ic
。
替换字符串¶
从文本的第一行到最后一行,将搜索到的字符串替换为指定的字符串
:1,$ s/search/replace
注意: 您也可以使用 :0,$s/search/replace
指定从文件的绝对开头开始。
从第 n
行到第 m
行,将搜索到的字符串替换为指定的字符串
:n,m s/search/replace
默认情况下,每行只替换找到的第一个匹配项。要强制替换每个匹配项,您必须在命令末尾添加 /g
。
:n,m s/search/replace/g
浏览整个文件以将搜索到的字符串替换为指定的字符串
:% s/search/replace
删除指定行¶
- 删除空行
:g/^$/d
- 删除从第 n 行到第 m 行的行
:n,md
- 删除包含字符串的行
:g/string/d
- 删除不包含字符串的行
:g!/string/d
- 删除所有以 # 开头的行
:g/^#/d
这里的 g 代表 global(全局)。
文件操作¶
- 保存文件
:w
- 另存为
:w file
- 将第
n
行到第m
行的内容保存到另一个文件
:n,m w file
- 重新加载文件的最后记录
e!
- 将另一个文件的内容粘贴到光标后
:r file
- 不保存退出编辑文件
:q
- 退出编辑在会话期间已修改但未保存的文件
:q!
- 退出文件并保存
:wq
或 :x
其他功能¶
可以通过指定要加载的选项来执行 VI 进行会话。为此,您必须使用 -c
选项。
vi -c "set nu" /home/rockstar/file
也可以将Ex 命令输入到名为 .exrc
的文件中,该文件位于用户的主目录中。命令将在每次启动 VI 或 VIM 时被读取和应用。
vimtutor
命令¶
有一个教程可以学习如何使用 VI。可以使用 vimtutor
命令访问。
vimtutor
可视化模式¶
此模式是命令模式的一个子项。您可以通过键入 v 或 V 来完成它;前者操作内容是字符级别的,后者操作内容是行级别的。
信息
您可以使用箭头键来标记您想要操作的字符或行内容。
字符级别¶
- 删除(剪切) - 按 v 键标记您要删除的字符内容,然后按 x 键删除
- 复制 - 按 v 键标记要复制的字符内容,然后按 y 键复制
行级别¶
- 删除(剪切) - 按 V 键标记要删除的行,然后按 x 键删除
- 复制 - 按 V 键标记要复制的行,然后按 y 键复制