[TOC]

什么是vim

1
2
3
4
5
6
7
# vi进阶版的文本编辑器
## 使用前先安装

#安装指令
yum install -y vim

diff 1.txt 2.txt # 对比两个文件是否一致

vim的四种模式

命令模式

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
# 光标跳转
gg # 将光标跳转到第一行行首
G # 将光标跳转到最后一行
`N`gg # 将光标跳转至对应行数 N
$ # 切换光标值所在行的 行末
^ # 切换光标值所在行的 文本行首
0 # 切换光标值所在行的 行首

# 翻页(了解即可)
Ctrl +f # 向下翻阅
Ctrl +b # 向上翻阅

# 复制
yy # 复制(会把光标所在的一整行内容都复制进去)
nyy/yny # 复制多行内容,光标所在行及以下行数内容 n代表数字

# 剪切
dd # 将光标所在行的一整行都剪切
ndd/dnd # 剪切多行内容,光标所在行及以下行数内容 n代表数字
x # 剪切光标所在处的 一个字符
X # 剪切光标所在处的 前一个字符

# 删除
dG # 删除光标所在行至文本结尾
D # 删除光标所在位置至当前行末

# 粘贴
p(小写) # 将内容粘贴至光标所在行的下一行(若复制/剪切了非一行字符则粘贴至光标后)
P(大写) # 将内容粘贴至光标所在行的上一行(若复制/剪切了非一行字符则粘贴至光标前)

# 替换
r # 替换光标所在的字符(只能替换一个)
R # 替换光标所在之后的一行内容(按ESC)

# 撤销
u # 撤销
ctrl + r # 恢复撤销内容

编辑模式

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
# 进入编辑模式的提示符:
-- INSERT --
# 进入编辑模式的指令:
i I o O a A s S
# 各指令的功能:
i # 从当前光标`字符前`进入编辑模式
I # 从当前光标`所在行的文本行首`进入编辑模式
a # 从当前光标`字符后`进入编辑模式
A # 从当前光标`所在行的行末`进入编辑模式
o(小写) # 从光标`下一行插入`并进入编辑模式
O(大写) # 从光标`上一行插入`并进入编辑模式
s # 将当前光标`处`的字符删除并进入编辑模式
S # 将当前光标`行`的字符删除并进入编辑模式

# 保存退出
write写入(保存)q:quit (退出)
:w # 仅保存
:w! # 强制保存
:q # 仅退出
:q! # 强制退出
:wq # 保存退出
:wq! # 强制保存退出
:x # 保存退出
:x! # 强制保存退出
ZZ # 保存退出

末行模式

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
# 行
:n #跳转至对应的行(n=number)

# 搜索
/字符串 #查找指定的内容(字符串=需查找的内容)
n #查找一下个
N #查找上一个
:set nohlsearch #取消搜索模式下的高亮显示
:set hlsearch #恢复搜索模式下的高亮搜索

# 查找和替换
## 语法格式:

:%s#xx#yy#gc
:%s#原内容#替换内容#g

% #匹配所有行
s #查找并替换
g #替换所有匹配到的内容(不加g,每行只替换一个匹配内容)

c #挨个提示,是否要覆盖(不使用)
(y/n/a/q/l/^E/^Y)
y 替换
n 不替换
a 全部替换
q 退出
l 替换一次并退出

# 输出文件
:w! 文件路径 #将当前文件内容输出到另一个文件中 覆盖原文件内容
# 写入文件
:r! 文件路径 #将另一个文件内容写入到当前文件中 不会覆盖源文件内容

# set选项
:set ic # 不区分大小写(需搭配搜索使用)
:set ai # 自动缩进(换行时保留原行缩进)
:set list # 显示制表符(显示tap(^|)和结尾($))
:set nu # 显示行号

# 取消
set no (ic,ai,list,nu)

视图模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 进入视图模式的提示符:
-- VISUAL BLOCK --
# 进入视图模式的指令:
ctrl + v 视图模式

# 注释整个文件
ctrl +v # 进入视图模式(下方出现提示符:-- VISUAL BLOCK --)
G # 移至最后一行
I # 从当前光标`所在行的行首`进入编辑模式
# # 在行首输入'#'
ESC # 退出编辑模式
ESC # 退出视图模式

# 批量取消注释
ctrl +v # 进入视图模式(下方出现提示符:-- VISUAL BLOCK --)
G # 移至最后一行
x # 使用剪切命令,剪切光标所在处的 一个字符

vim分割文件

1
2
3
4
5
6
7
8
9
10
# 水平分割
vim -o file1 file2

# 垂直分割
vim -O file1 file2

//ctrl+ww 文件间切换

# 如果vim非正常退出 (ctrl+z)挂起或强制退出终端没关闭VIM后
//删除同文件名的.swp文件即可解决

vim编辑网卡配置文件

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
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
IPADDR="10.0.0.100"
PREFIX="24"
GATEWAY="10.0.0.2"
DNS1="223.5.5.5"

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=eth1
DEVICE=eth1
ONBOOT=yes
IPADDR=172.16.1.100
NETMASK=255.255.255.0