本章内容
▼Vim编辑器
▷Vim的模式
- 命令模式(Normal)
- 插入模式(Insert)
- 扩展命令模式(extended command)
1. Vim [OPTION] file
[OPTION]
+NUM `打开后跳到NUM行`
+/PATTERN `跳到PATTERN匹配到的行`
-b FILE `二进制打开`
-d FILE1 FILE2 `比较文件`
-m FILE `只读打开`
-e FILE `ex模式`
2. 命令模式
1. 命令模式_光标跳转
字符间
命令 | 用途 |
---|---|
[NUM] h |
向左NUM个字符 |
[NUM] l |
向左NUM个字符 |
[NUM] j |
向左NUM个字符 |
[NUM] k |
向左NUM个字符 |
单词间
命令 | 用途 |
---|---|
[NUM] w |
下NUM个单词 |
[NUM] e |
当前或下NUM个单词词尾 |
[NUM] b |
当前或上NUM个单词词首 |
页间
命令 | 用途 |
---|---|
H |
页首 |
M |
页中 |
L |
页底` |
zz |
当前行移到顶 |
zt |
当前行移到中 |
zb |
当前行移到底 |
行间、句间、段落间
命令 | 用途 |
---|---|
^ |
行首(非空) |
0 |
行首 |
$ |
行尾 |
NUM G |
跳到NUM行 |
G |
尾行 |
gg |
首行 |
( |
下一句 |
) |
下一句 |
{ |
上一段 |
} |
下一段 |
翻屏快捷键
Ctrl+f 向下一屏
Ctrl+b 向上一屏
Ctrl+d 向下半屏
Ctrl+u 向上半屏
2. 命令模式_字符操作
命令 | 用途 |
---|---|
[NUM] x |
删除当前NUM个字符 |
p |
粘贴x删除的字符 |
~ |
大小写转换 |
gu |
变小写 |
gU |
变大写 |
J |
删除当前行的换行符 |
r |
替换当前字符 |
R |
替换模式 |
删除命令
命令 | 用途 |
---|---|
[NUM] d |
删除命令(结合下面使用), |
d$ 或 D |
删到尾 |
d0 |
删到头 |
d^ |
删到头(非空) |
dw |
删除当前字符 |
de |
后删单词 |
db |
前删单词 |
[NUM] dd |
删除NUM行 |
复制命令
命令 | 用途 |
---|---|
[NUM] y |
复制命令(结合下面使用), |
y$ |
复制到尾 |
y0 |
复制到头 |
y^ |
复制到头(非空) |
yw |
复制当前字符 |
ye |
复制后单词 |
yb |
复制前单词 |
[NUM] yy |
复制NUM行 |
粘贴命令
命令 | 用途 |
---|---|
p |
往后粘贴 |
P |
往前粘贴 |
改变命令
命令 | 用途 |
---|---|
c |
修改后进入插入模式(下同) |
c$ 或 C |
删到尾 |
c0 |
删到头 |
c^ |
删到头(非空) |
cw |
删除当前字符 |
ce |
后删单词 |
cb |
前删单词 |
[NUM] cc |
删除NUM行 |
< start pos > < command > < end pos >
示例
命令 | 用途 |
---|---|
0y$ |
复制一行 |
0gU$ |
整行成大写 |
100iwang [ESC] |
输入wang 100次 |
命令 | 用途 |
---|---|
di" |
删除" " 之间内容 |
yi( |
复制( ) 之间内容 |
vi[ |
选中[ ] 之间内容 |
dtCHAR |
删除之后直到CHAR 字符 |
ytCHAR |
复制之后直到CHAR 字符 |
查找
命令 | 用途 |
---|---|
/PATTERN |
向下查找 |
?PATTERN |
向上查找 |
n |
查找方向(对查找结果) |
N |
查找反向(对查找结果) |
撤消更改
命令 | 用途 |
---|---|
[NUM] u |
撤消NUM次 |
U |
撤消行的所有更改 |
Ctrl + r |
重做 |
[NUM] . |
重复前一个/NUM个操作 |
3. vim的寄存器
共有26个全名寄存器和1个无全名器
命令 | 用途 |
---|---|
3"tyy |
复制3行到t寄存器 |
"tp |
粘贴t寄存器 |
4. 标记和宏
命令 | 用途 |
---|---|
m{a-z} |
将当前位置标记为a,可标记26个{a-z} |
'a |
跳转到标记a |
qa |
录制宏a |
q |
停止录制 |
@a |
执行宏a |
@@ |
重新执行上次的宏 |
3. 扩展命令模式
1. 关闭文件
命令 | 用途 |
---|---|
:q |
退出 |
:q! |
强制退出 |
:wq |
保存退出 |
:x |
保存退出 |
ZZ |
保存退出 |
ZQ |
不保存退出 |
2. 命令操作
命令 | 用途 |
---|---|
:w |
写(存)磁盘文件 |
:r FILE |
读文件到当前文件中 |
:w FILE |
将当前文件写到另一个文件中 |
:!COMMAND |
执行命令 |
:r!COMMAND |
把命令的结果写入当前文件 |
3.地址定界
地址定界+COMMAND
命令 | 用途 |
---|---|
:start_pos,end_pos |
地址定界 |
:NUM |
跳转到NUM行 |
:NUM,+NUM |
如:2,+3表示2,5行 |
:. |
当前行 |
:$ |
最后行 |
:% |
全文 |
/STR1/,/STR2/ |
从匹配到的STR1到STR2 |
NUM,/STR/ |
从第NUM行到STR匹配行 |
/STR/,$ |
从STR匹配行到结束 |
COMMAND
命令 | 用途 |
---|---|
d |
删除 |
w FILE |
选中范围保存到文件FILE |
r FILE |
选中范围保存到指定FILE |
示例
:1,3d
:/string1/,/string2/y
:/string1/,$r /data/file1
4.查找并替换
格式: s/要查的内容/要替换的内容/修饰符
要替换的内容:
1. 可以使用\1,\2括号引用
2. 可以使用&引用前面查找到的整个内容
修饰符
命令 | 用途 |
---|---|
I |
忽略大小写 |
g |
每行替换1次 |
gc |
全部替换 |
分隔符可以使用:
1. s/string1/string2/g
2. s@string1@string2@gc
3. s#string1#string2#i
5. 编辑二进制文件
1. vim -b binary_FILE
2. 命令模式下:
:%!xxd 十六进制
:%!xxd-r 二进制
3. 可视化模式
命令模式下
命令 | 用途 |
---|---|
v |
字符 |
V |
行 |
Ctrl+v |
块 |
4. 多文件模式
vim FILE1 FILE2 FILE3 ...
命令模式下
命令 | 用途 |
---|---|
:next |
下一个 |
:prev |
上一个 |
:first |
第一个 |
:last1 |
最后一个 |
:wall |
保存所有 |
:qwall |
退出所有 |
:wqall |
保存并退出所有 |
使用多窗口
vim -o | -O FILE1 FILE2
-o : 水平分割
-O : 垂直分割
命令 | 用途 |
---|---|
Ctrl+w |
窗口间切换 |
Ctrl+w,s |
水平分隔 |
Ctrl+w,v |
垂直分隔 |
Ctrl+w,q |
取消相邻窗口 |
Ctrl+w,o |
取消全部窗口 |
▷定制Vim的工作特性
1. 配置文件
- 全局: /etc/vimrc
- 个人:~/.vimrc
2. 扩展模式(临时有效)
命令 | 用途 |
---|---|
set [no]nu |
[不]显示行号 |
set [no]ic |
[不]忽略大小写 |
set [no]ai |
[不]自动缩进 |
set [no]paste] |
[不]复制保留格式 |
set [no]si |
[不]智能缩进 |
set [no]search |
[不]高亮搜索 |
syntax [off]on |
[关闭]语法高亮 |
set ff=dos|unix |
启用win格式 |
set textwidth=65 ,set wrapmargin=15 |
设置文本宽度 |
set [no]cul] |
[不]光标所在标识线 |
set [no]list |
[不]显示tab和换行符 |
3. 了解更多
-
Set 帮助
:help option-list
:set OR :set all -
vi /vim内置帮助
:help
:help topic*Use :q to exit help*
-
vimtutor : vim帮助