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
退出而不保存 (退出);w
保存您的工作 (写入);wq
(写入退出) 或x
(退出) 保存并退出。
在命令模式下,连续两次点击大写状态的Z键以保存并退出。
您必须在之前的命令中添加! 来强制退出,无需确认。
警告
没有定期备份,因此您必须记住定期保存您的工作。
操作模式¶
在 VI 中,有 3 种工作模式
- 命令模式;
- 插入模式;
- ex 模式。
VI 的理念是在命令模式和插入模式之间交替使用。
第三种模式,ex,是来自旧文本编辑器的页脚命令模式。
命令模式¶
这是 VI 启动时的默认模式。要从任何其他模式访问它,只需按Esc 键。
此时,所有键盘输入都被解释为命令,并执行相应的操作。这些本质上是用于编辑文本的命令(复制、粘贴、撤消...)。
命令不会显示在屏幕上。
插入模式¶
这是文本修改模式。要从命令模式访问它,您必须按下特殊键,这些键除了更改模式外还会执行操作。
文本不会直接输入到文件中,而是输入到内存中的缓冲区区域。只有在保存文件时,更改才会生效。
Ex 模式¶
这是文件修改模式。要访问它,您必须首先切换到命令模式,然后输入ex 命令,该命令通常以字符 :
开头。
通过按Enter 键来验证命令。
移动光标¶
在命令模式下,有几种方法可以移动光标。
鼠标在文本环境中不活动,但在图形环境中,可以逐个字符移动它,但存在快捷方式可以更快地移动。
移动光标后,VI 仍处于命令模式。
光标放置在所需字符下方。
从一个字符¶
- 向左移动一个或
n
个字符
Left,n Left,h 或 n h
- 向右移动一个或
n
个字符
Right,n Right,l 或 n l
- 向上移动一个或
n
个字符
Up,n Up,k 或 n k
- 向下移动一个或
n
个字符
Down,n Down,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 (插入)
- 在字符后插入文本
a (追加)
相对于一行¶
- 在行首插入文本
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
搜索字符串¶
- 从光标处搜索字符串
/string
- 在光标之前搜索字符串
?string
- 查找下一个匹配的字符串
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 代表全局。
文件操作¶
- 保存文件
: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
您也可以在用户登录目录中的名为.exrc
的文件中输入Ex 命令。这些命令将在每次启动 VI 或 VIM 时读取和应用。
vimtutor
命令¶
有一个学习如何使用 VI 的教程。您可以使用命令vimtutor
访问它。
vimtutor
可视化模式¶
此模式是命令模式的子项。您可以通过键入 v 或 V 来完成它;前者的操作内容在字符级别,而后者的操作内容在行级别。
信息
您可以使用箭头键来标记要操作的字符或行内容。
字符级别¶
- 删除(剪切) - 键入 v 键来标记要删除的字符内容,然后键入 x 来删除它
- 复制 - 键入 v 键来标记要复制的字符内容,然后键入 y 键来复制它
行级别¶
- 删除(剪切) - 键入 V 键来标记要删除的行,然后键入 x 来删除它
- 复制 - 键入 V 键来标记要复制的行,然后键入 y 键来复制它