概述
vi与vim
vi编辑器是Unix及Linux系统下标准的编辑器,相当于Windows系统中的记事本。是我们使用Linux系统不可缺少的工具。
vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;相比vi编辑器,vim编辑器拥有更强大的功能,如果将vi编辑器比作是Windows系统里的记事本,那么vim编辑器就是Windows里的Word。因为程序简单,编辑速度相当快速。
vim会依据文件扩展名或者是文件内的开头信息, 判断该文件的内容而自动的执行该程序的语法判断式,再以颜色来显示程序代码与一般信息。
vim里面加入了很多额外的功能,例如支持正则表达式的搜索、多文件编辑、块复制等等。
Vim编辑器
Vim编辑器可按照功能将其分为三种模式形态,即插入模式,命令模式,拓展命令模式。
模式 | 功能 |
---|---|
插入模式 | 可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式,在此模式下可进行文本的插入删除修改等;按ESC键即可返回命令模式 |
命令模式 | 命令模式是Vim编辑器的初始模式,在此模式下可进行Linux命令操作 |
拓展命令模式 | 按”Shift+:“即可进入扩展命令模式,在此模式下可进行命令行操作,如保存,退出等 |
Vim命令及其应用
Vim命令(启动Vim编辑器)
格式:vim + 选择项 + 文件名(中间以空格隔开)
格式 | 功能 |
---|---|
-c cmd | 在打开文件前,先执行指定的命令 |
-r | 恢复上次异常退出的文件 |
-R | 以只读的方式打开文件,但可以强制保存 |
-M | 以只读的方式打开文件,不可以强制保存 |
-y num | 将编辑窗口的大小设为num行 |
+ | 从文件的末尾开始 |
+num | 从第num行开始 |
+/string | 打开file,并将光标停留在第一个找到的string上 |
Vim编辑器模式切换
命令模式——> 插入模式
按键 | 功能 |
---|---|
i | insert, 在光标所在处输入 |
I | 在当前光标所在行的行首输入 |
a | append, 在光标所在处后面输入 |
A | 在当前光标所在行的行尾输入 |
o | 在当前光标所在行的下方打开一个新行 |
O | 在当前光标所在行的上方打开一个新行 |
插入模式——> 命令模式
按键 | 功能 |
---|---|
ESC | 切换到命令模式 |
命令模式——> 扩展命令模式
按键 | 功能 |
---|---|
Shift+: | 切换到扩展命令模式 |
扩展命令模式——> 命令模式
按键 | 功能 |
---|---|
先按ESC再按Enter | 切换到命令模式 |
Vim命令模式
常见命令
操作 | 功能 |
---|---|
ZZ | 保存退出 |
ZQ | 不保存退出 |
h | 光标向左移动 |
l | 光标向右移动 |
j | 光标向下移动 |
k | 光标向上移动 |
#COMMAND | 光标跳转由#指定的个数的字符 |
w | 光标跳转到下一个单词的词首 |
e | 光标跳转到当前或下一单词的词尾 |
b | 光标跳转到当前或前一个单词的词首 |
H | 光标跳转到页首 |
M | 光标跳转到页中间行 |
L | 光标跳转到页底 |
删除命令
操作 | 功能 |
---|---|
d | 删除命令,可结合光标跳转字符,实现范围删除 |
d$ | 删除到行尾 |
d^ | 删除到非空行首 |
d0 | 删除到行首 |
dd | 删除光标所在的行 |
#dd | 多行删除 |
D | 从当前光标位置一直删除到行尾,留空行,等同于d$ |
复制命令
操作 | 功能 |
---|---|
y | 复制,行为相似于d命令 |
y$ | 复制到行尾 |
y0 | 复制到行首 |
y^ | 复制非空行首 |
ye | 复制到当前或者下个单词词尾 |
yw | 复制到下个单词词首 |
yy | 复制行 |
#yy | 复制多行 |
Y | 复制整行 |
其他命令
操作 | 功能 |
---|---|
p | 缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面 |
u | 撤销最近的更改 |
#u | 撤销之前多次更改 |
Vim扩展命令模式
常见操作
操作 | 功能 |
---|---|
:q | 退出 |
:q! | 强制退出,丢弃做出的修改 |
:wq | 保存退出 |
:x | 保存退出 |
:r filename | 读文件内容到当前文件中 |
:w filename | 将当前文件内容写入另一个文件 |
:!command | 执行命令 |
:r!command | 读入命令的输出 |
地址界定
界定符 | 功能 |
---|---|
# | 具体第#行,例如2表示第2行 |
#,# | 从左侧#表示起始行,到右侧#表示结尾行 |
#,+# | 从左侧#表示的起始行,加上右侧#表示的行数 |
:2,+3 | 表示2到5行 |
. | 当前行 |
$ | 最后一行 |
.,$-1 | 当前行到倒数第二行 |
% | 全文, 相当于1,$ |
查找替换
查找
操作 | 功能 |
---|---|
/PATTERN | 从当前光标所在处向文件尾部查找 |
?PATTERN | 从当前光标所在处向文件首部查找 |
n | 与命令同方向 |
N | 与命令反方向 |
替换
操作 | 功能 |
---|---|
i: | 忽略大小写 |
g | 全局替换;默认情况下,每一行只替换第一次出现 |
gc | 全局替换,每次替换前询问 |
示例1 | %s@目标内容@替换内容@g |
示例2 | %s#目标内容#替换内容#i |
设置文件格式
操作 | 功能 |
---|---|
启用windows格式 | set fileformat=dos |
启用unix格式 | set fileformat=unix |
设置文本宽度
:set textwidth=65
:set wrapmargin=15
案例
案例一:在vim中设置tab缩进为4个字符
1.通过cd命令到达home目录下,利用vim命令打开.vimrc文件
liuyan@liuyan-virtual-machine:~$ vim .vimrc
- 在.vimrc文件里输入set tabstop=4 保存退出后运行.vimrc文件即可
案例二:删除文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号
- 利用vim命令打开目标文件,目标文件如下:
1 #!/bin/bash
2 #+--+--+--+--+--+--+--+--+--+
3 #author:liuyan
4 #date:2020-03-07
5 #tel:188332489740
6 #Email:2742604627@qq.com
7 #+--+--+--+--+--+--+--+--+--+
8 # hsdgjdfhglkjs
9 # hgfjkhdsksd
10 # aaaaaaaaaaaaaaaaaaaaaaaas
11 # aaaaaaaaaaaaad
12 # aaaaaaaaac
13 # aaaaaaaaaaaaacc
14 adsssssssssssfdgsf
15 adgshjkfd
- 转到扩展命令模式,输入修改命令:%s@# +@@g修改后如下:
1 #!/bin/bash
2 #+--+--+--+--+--+--+--+--+--+
3 #author:liuyan
4 #date:2020-03-07
5 #tel:188332489740
6 #Email:2742604627@qq.com
7 #+--+--+--+--+--+--+--+--+--+
8 hsdgjdfhglkjs
9 hgfjkhdsksd
10 aaaaaaaaaaaaaaaaaaaaaaaas
11 aaaaaaaaaaaaad
12 aaaaaaaaac
13 aaaaaaaaaaaaacc
14 adsssssssssssfdgsf
15 adgshjkfd
16
~
~
转载:https://blog.csdn.net/qq_42452450/article/details/104719646
查看评论