常识
- 空白符包括空格和制表符
- VI 分多种模式
- 命令模式/默认模式 (
ESC
,ctr + [
) , 移动,跳转,执行命令 (normal) - 输入模式 (
i
,I
,a
,A
,o
,O
,s
,S
,R
) 输入, 编辑 - 末行模式 (
:
,/
,?
) 保存, 退出, 查找, 替换等 - 可视模式 (
v
,V
,ctrl + v
), 选择, 行选, 块选
- 命令模式/默认模式 (
- 常用键
-
w
单词, 不包括标点 (w
,cw
,dw
,vw
,yw
) -
b
单词开始, 不包括标点 (b
,cb
,db
,vb
,yb
) -
e
单词结尾, 不包括标点 (e
,ce
,de
,ve
,ye
) -
W
单词, 空白符分割 (W
,cW
,dW
,vW
,yW
) -
B
单词开始, 空白符分割 (B
,cB
,dB
,vB
,yB
) -
E
单词结尾, 空白符分割 (E
,cE
,dE
,vE
,yE
) -
^
软行首, 不包括空白符 (0
,c0
,d0
,v0
,y0
) -
0
硬行首, 包括空白符 (0
,c0
,d0
,v0
,y0
) -
$
行结尾 ($
,c$
,d$
,v$
,y$
)
-
- 操作
-
c
剪切 (cut 进入输入模式) -
d
删除 (delete 保持命令模式) -
v
选择 (viscidity) -
y
复制
-
- 范围
-
i
里面 (in) -
a
所有 (all), 包括成对的括号, 空格等
-
- 对象
-
w
单词 (word) -
s
句子 (sentence句子) -
p
段落 (paragraph) -
'
,"
,)
,]
,}
,>
成对标点符号 -
t
标签 (tag)
-
- 操作 + 范围 + 对象
-
da)
删除小括号及小括号中的内容 -
ci}
删除大括号中的内容, 并进入输入模式 -
vip
选择当前段落 - 等几十重组合
-
移动
-
h
左 (右手食指左移) -
j
下 (右手食指) -
k
上 (右手中指) -
l
右 (右手无名指) -
w
下个单词 (word) -
b
前一个单词 (before) -
e
下一单词结尾 (end) -
W
下个单词, 包括标点 (word) -
B
前一个单词, 包括标点 (before) -
E
下一单词结尾, 包括标点 (end) -
0
行首 -
^
行首 不包括空白符(正则表达式:字串开始) -
$
行尾 (正则表达式:字串结尾) -
-
前一行行首 -
+
后一行行首 -
gg
首行 -
G
尾行 -
#G
指定行 -
ctrl + f
下翻一页 -
ctrl + b
上翻一页 -
ctrl + d
下翻半页 -
ctrl + u
上翻半页 -
(
句首 -
)
句尾 -
{
段首 -
}
段尾 -
H
屏幕第一行 -
M
屏幕中间行 -
L
屏幕最后行 -
%
跳转到相配对的括号 -
gd
跳转到本地定义位置 (Goto local Declaration) -
gD
跳转到全局定义位置 (Goto global Declaration) -
ctrl + o
返回旧光标位置 (Older)
插入 (转换成输入模式)
-
i
光标前插入 -
I
行首插入 -
a
光标后插入 -
A
行末插入 -
o
后分段 -
O
前分段
选择 (ESC取消选择)
-
v
选择 -
V
行选择 -
ctrl + v
块选择 -
vw
vW
选择一个单词 -
vb
vB
选择到单词开始 -
ve
vE
选择到单词末尾 -
v^
v0
选择到行首 -
v$
选择到行尾
删除 (cut进入输入模式, delete保持命令模式)
-
cw
dw
删除一个单词 -
cW
dW
删除一个单词, 空格分割 -
cb
db
删除到单词开始 -
cB
dB
删除到单词开始, 空格分割 -
ce
de
删除到单词末尾 -
cE
dE
删除到单词末尾, 空格分割 -
c^
d^
c0
d0
删除到行首 -
c$
d$
删除到行尾 -
dd
删除当前行 -
dD
删除到行尾 -
x
删除当前字符, 删除选择文字 -
X
删除前一个字符, 退格 -
J
删除行末换行 -
s
删除并转换输入模式 -
S
删除行并转换输入模式
修改
-
u
撤销上次操作 (undo) -
U
撤销当前行所有操作 事情闹大了,得有个更大的UNDO才行 -
ctrl + r
回复撤销前 (recover) -
r
替换当前字符 -
R
替换当前字符直到ESC为止 -
.
重复命令 -
`
大小写转换 -
>>
缩进 -
<<
反缩进
复制/粘帖
-
y
复制 -
Y
复制行 -
yw
yW
复制当前单词 -
yb
yB
复制到单词开始 -
ye
yE
复制到单词结尾 -
y^
复制到行首 -
y$
复制到行尾 -
yy
复制当前行 -
p
粘贴到光标后 -
P
粘贴到光标前
查找/替换
-
/word
向下查找 -
?word
向上查找 -
n
向下匹配 -
N
向上匹配 -
:s/1/2
搜索当前行 1 替换成 2 (search) -
:s/1/2/g
搜索当前行 1 全部替换成 2 (global) -
:%s/1/2/g
搜索全文档 1 全部替换成 2 -
:s/1/2/c
搜索全文档 1 替换成 2 需要询问 (cue) -
R
替换模式
文件操作
-
:q
退出 (quit) -
:w
存盘 (write) -
:e
编辑 (edit) ,没有输入文件名则加载当前文件 -
:r
读取 (read) ,读取文件到当前文件中 -
:!
强行操作,退出,存盘,编辑等 -
:x
保存并退出 -
zz
保存并退出
其他
-
K
查找帮助 -
q
录制宏 -
@
执行宏 -
.
重复上个命令