接触一段时间的vim了,可是却总是记不住各种各样的指令,当用vim编辑时总得去查阅,好烦,在初步熟悉的基础上精炼出来,因此初次接触vim可能会看得很费劲,记录在此,以备不时查阅。

image.png
Basic Movements
-
h,j,k,l: 左下上右,基本指令,自不必多说 -
wbege:前/后单词跳转,光标停留在单词首部/尾部 -
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: 向后/前删除单词后开始插入 -
ccorS,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