接触一段时间的vim了,可是却总是记不住各种各样的指令,当用vim编辑时总得去查阅,好烦,在初步熟悉的基础上精炼出来,因此初次接触vim可能会看得很费劲,记录在此,以备不时查阅。
Basic Movements
-
h
,j
,k
,l
: 左下上右,基本指令,自不必多说 -
w
b
e
ge
:前/后单词跳转,光标停留在单词首部/尾部 -
0
,^
: 移动到行头首字符, 非空首字符上,同<HOME>
-
$
: 移动到行尾 -
%
: 跳转到括号匹配 -
gg
/[[
,G
/]]
/<shift+g>
: 文件头,文件尾 -
fx
,F
: 正向,反向找到并移动到第一个x字符 -
:7<enter>
/7G
: 跳转到第7行 -
<Ctrl + e/y/d/u/f/b
: 滚动行/半屏/一屏 -
n<<
,n>>
: n行向左,右移动 -
M
,L
,H
: 移动到屏幕中,底,顶部 -
gg
,G
: 跳到顶部,底部
Insertion & Replace
-
i
,I
,a
,A
,o
,O
: 在当前位置前,行首,当前位置后,行尾插入,后/前插一行 -
ra
:替换当前字符为a -
R
:从光标开始替换字符 -
cb
,cw
: 向后/前删除单词后开始插入 -
cc
orS
,C
: 清空当前行并从头开始插入, 删除行后所有字符并开始插入 -
s/old/new
: 用old 替换new,当前行的第一个匹配,后面补个g
即为所有,前补个%
即为整个文件的匹配 -
:10,20 s/^/ /g
:在第10行到第20行每行前加四个空格,用于缩进 -
ddp
,ddP
,xp
: 与下一行,上一行交换,其实就是dd
+p/P
,剪切后粘贴, 交换前后字符 -
s
,S
: 删除当前字符, 行后开始插入 -
~
: 切换当前字符的大小写后光标前移 -
g~m
,gum
,gUm
: 对m指令的内容切换大小写,小写,大写 -
<m
,>m
: 这个待验证
Deletion & undoing
-
x
,X
: 删除当前,前一个字符 -
dd
,D
,ndd
: 删除当前行,当前光标和后面的字符,当前行开始后的n行 -
J
,gJ
: 合并两行,没有空格 -
:rd
,:rdx
: 删除第r行,第r到x行 -
dm
,dw
: 删除m[j,k...]的内容,word -
u
,U
: 撤销上一次操作,对当前行 -
.
,<Ctrl+r>
: 重复上一次改变,重做
Copying & paste
-
v
,V
: 进入visual mode,word/line 选定操作块 -
y
,yy
,nyy
: 复制选定块,当前行, 当前行和之后的n行 -
p
,P
,gp
,gP
: 粘贴文本在下一行,在前一行, 事后光标定位在后面 -
d
,dd
,:1 10d
: 剪切选定块,当前行,1-10行 -
:1 10 m 20
: 1-10行移动到20行之后 -
:reg
,reg x
: 查看当前剪切板内容,指定哪一条
常用设置
-
:set ts=4
: 设置 Tab -
:set number
: 显示行号 -
:sh
,Ctrl + d
: 临时进入控制台,返回
其他通用组合指令元素
-
.
: 重复操作
VISUAL 操作
-
>
/<
: tab 缩进 -
==
,n==
,gg=G
: 当前行,选择n行,全文 code format