前言
vi 编辑器是所有 Unix 及 Linux 系统下标准的文本编辑器,相当于 windows 系统中的记事本一样,它是我们使用 Linux 系统不能缺少的工具。而 vim 视为 vi 的升级版本,基础功能完全一样,只是一些功能的增强以及可用不同的颜色对文本关键字进行加亮,所以其更适合编写程序使用。
简介
vi 工作模式
vi 编辑器是所有 Unix 及 Linux 系统下标准的纯文本编辑器。对 Unix 及 Linux 系统的任何版本,vi 编辑器是完全相同的。
官方网站:https://www.vim.org/
vi 分为三种工作状态:
1、命令模式(command mode);
2、插入模式(insert mode);
3、底行模式(last line mode)。
工作模式 |
应用情景 |
命令模式 |
控制屏幕光标的移动,对字符/字段/行的删除/复制/粘贴操作 |
插入模式 |
纯文本输入 |
底行模式 |
文件保存/退出 vi,设置编辑环境,查找/替换字符串操作 |
工作模式 |
切换方法 |
命令模式 |
按 i 进入【插入模式】; 按 : 进入【底行模式】。 |
插入模式 |
按ESC 进入【命令模式】 |
底行模式 |
按ESC 进入【命令模式】 |
使用
vi 编辑文本
在终端机上输入vi
命令即可进入 vi 编辑器编辑对应的文件,具体操作如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
sudo vi /home/root/read.txt # 使用 vi 编辑 read.txt 文档
#【命令模式】--------------------------------------
#『光标』+++++++
# [h ] 光标左移
# [j ] 光标下移
# [k ] 光标上移
# [l ] 光标右移
# [^ ] 光标移到行首
# [$ ] 光标移到行尾
# [5- ] 光标向上移动5行
# [5+ ] 光标向下移动5行
# [5G ] 光标移动到第5行
#『插入』+++++++
# [i ] 在光标前面插入【进入插入模式】
# [I ] 所在行最前插入【进入插入模式】
# [a ] 在光标后面插入【进入插入模式】
# [A ] 所在行最后插入【进入插入模式】
#『删除』+++++++
# [x ] 删除光标后[一个字符]
# [X ] 删除光标前[一个字符]
# [6x ] 删除光标后[六个字符]
# [8X ] 删除光标前[八个字符]
# [dd ] 删除光标所在的[一行]
# [9dd] 删除光标所在行开始的[九行]
#『复制』+++++++
# [yw ] 复制光标后[一段字段] (以空格或符号分隔开的字段!!)
# [yy ] 复制光标所在的[一行]
# [5yw] 复制光标后[五段字段] (以空格或符号分隔开的字段!!)
# [9yy] 复制光标所在行开始的[九行]
#『粘贴』+++++++
# [p ] 粘贴
#『撤消』+++++++
# [u ] 最后一次修改[撤消&重做]
# [Ctrl + r] 可多次[撤消]
#
#【底行模式】--------------------------------------
#『光标』+++++++
# [:5 ] 光标移动到第5行(要按回车执行,下面操作都一样)
# [:set nu ] 显示行号
# [:set nonu] 不显示行号
#『查找』+++++++
# [/ab] 向下查找"ab"字符串,[n]继续查找下一个
# [?ab] 向上查找"ab"字符串,[n]继续查找上一个
#『替换』+++++++
# [: s/str1/str2/g] 所在行中所有 str1 字符串替换为 str2
# [:% s/str1/str2/g] 从[首行]到[最尾]行中所有"str1"字符串替换为"str2"
# [:1,$ s/str1/str2/g] 第[01]行到[最尾]行中所有"str1"字符串替换为"str2"
# [:6,20 s/str1/str2/g] 第[06]行到第[20]行中所有"str1"字符串替换为"str2"
# [:.,20 s/str1/str2/g] [光标]行到第[20]行中所有"str1"字符串替换为"str2"
# [:.,$-5 s/str1/str2/g] [光标]行到尾[05]行中所有"str1"字符串替换为"str2"
#『退出』+++++++ └→g表示替换所有匹配项
# [:q!] 不保存退出
# [:wq] 保存退出
# [:w ] 保存文档(但不退出)
# [:w filename] 另存为叫filename的文件(但不退出)
|
补充说明:
vi 的查找与替换操作支持正则表达式,但是不支持限定操作(主要包括:{}、?、+、|
),没能很好体现正则表达式优势。关于正则表达式相关语法知识,请移步《正则表达式语法》!