- 常规模式
- 编辑模式
- 指令模式
三者的切换 编辑模式 <->常规模式<->指令模式
hjkl
分别对应方向键左下上右[ctrl] + f
[ctrl] + b
对应下一页和上一页n [space]
从当前位置开始向右移动n位0
和$
分别对应移动到这一行的开头和结尾G
移动到文件的最后一行nG
移动到文件的第n行n[enter]
从当前位置往下移动n行
/word
从当前位置开始向后查找word
?word
从当前位置开始前后查找word
n
和N
分别表示从当前为开开始往后和往前重复上一次查找:[start],[end]s/[word]/[target]/[gc]
从start行开始到end行结束,查找其中的word并替换为target. 启始行可以用$
表示文件的最后一行(和光标移动中的$表示一行的结尾不同.g
表示全部替换,c
表示替换是逐个确认
x
X
nx
:x
表示删除当前位置的字符,X
类似于backspace删除前面的一个字符, nx向后删除n个字符(包括当前字符)dd
[n]dd
: 删除光标所在的一行,ndd
删除光标以下的n行(包括当前行一共n行)d0
: 删除光标所在位置到这一行开头的所有字符d$
: 删除光标所在位置到这一行结尾的所有字符(包含当前字符)d1G
: 删除第1行到光标所在行dG
: 删除光标所在行到最后一行
yy
: 复制光标所在行nyy
: 复制光标以下的n行,包括当前行y0
: 复制光标所在位置到这一行的开头y$
: 复制光标所在位置到这一行的结尾y1G
: 复制第一行到光标所在行yG
: 复制光标所在行到文件的最后一行
p/P
:p
在光标位置后面插入复制的数据,P
在光标的前面插入
J
: 将当前行和下一行合并为一行u
: 撤销上次操作[ctrl] r
: 重做上次操作.
: 重复上一次操作
a/A
在当前光标位置的后面插入,A
在当前行的结尾插入i/I
i
在当前光标位置的前面插入,I
在当前光标所在行地一个非空字符前插入r/R
r
替换当前光标所在位置的字符,替换完成就会切换到一般模式,R
一直保持替换模式直到ESC
o/O
o
在当前位置的下一行开始插入,O
在当前位置的上一行插入ESC
切换到普通模式
:w
:w!
:q
:q!
:wq
这些就不多说了,:w!
强制写入,具体能否成功还要看权限,没有w
权限但是如果可以chmod
那就能成功:w [filename]
将当前内容保存为file
,也就是另存为
:r [filename]
读取filename
这个文件的内容并将其插入到光标所在的位置:n1,n2 w [filename]
将当前内容n1-n2行另存为filename
:! [command]
暂时离开vim
并执行command
,比如在编辑过程中想要查看下当前目录下的文件名::! ls
:set nu
:set nonu
显示/隐藏行号
v/V
: 进入可视化选择模式,v
选择单个字符,V
选择行[ctrl] + v
: 多行不规则选择,比如同时选择5行开头10个字符d
: 删除所选内容y
: 复制所选内容
sp
/vsp
: 分屏操作,sp
水平分屏,vsp
垂直分屏[ctrl] + w + [hjkl]
: 切换当前激活的编辑器