移动光标
- 左移
h
、右移l
、下移j
、上移k
- 向下翻页
ctrl + f
,向上翻页ctrl + b
- 向下翻半页
ctrl + d
,向上翻半页ctrl + u
- 移动到行尾
$
,移动到行首0
(数字),移动到行首第一个字符处^
- 移动光标到下一个句子
)
,移动光标到上一个句子(
- 移动到段首
{
,移动到段尾}
- 移动到下一个词
w
,移动到上一个词b
- 移动到文档开始
gg
,移动到文档结束G
- 移动到匹配的
{}.().[]
处%
- 跳到第
n
行ngg
或nG
或:n
- 移动光标到屏幕顶端
H
,移动到屏幕中间M
,移动到底部L
- 读取当前字符,并移动到本屏幕内下一次出现的地方
*
- 读取当前字符,并移动到本屏幕内上一次出现的地方
#
查找替换
- 光标向后查找关键字
#
或者g#
- 光标向前查找关键字
*
或者g*
- 当前行查找字符
fx
,Fx
,tx
,Tx
- 基本替换
:s/s1/s2
(将下一个s1替换为s2) - 全部替换
:%s/s1/s2
- 只替换当前行
:s/s1/s2/g
- 替换某些行
:n1,n2 s/s1/s2/g
- 搜索模式为
/string
,搜索下一处为n
,搜索上一处为N
- 制定书签
mx
, 但是看不到书签标记,而且只能用小写字母 - 移动到某标签处
x
,1旁边的键 - 移动到上次编辑文件的位置
.
PS:.
代表一个任意字符 *
代表一个或多个字符的重复
编辑操作
- 光标后插入
a
, 行尾插入A
- 后插一行插入
o
,前插一行插入O
- 删除字符插入
s
, 删除正行插入S
- 光标前插入
i
,行首插入I
- 删除一行
dd
,删除后进入插入模式cc
或者S
- 删除一个单词
dw
,删除一个单词进入插入模式cw
- 删除一个字符
x
或者dl
,删除一个字符进入插入模式s
或者cl
- 粘贴
p
,交换两个字符xp
,交换两行ddp
- 复制
y
,复制一行yy
- 撤销
u
,重做ctrl + r
,重复.
- 智能提示
ctrl + n
或者ctrl + p
- 删除
motion
跨过的字符,删除并进入插入模式c{motion}
- 删除到下一个字符跨过的字符,删除并进入插入模式,不包括
x
字符ctx
- 删除当前字符到下一个字符处的所有字符,并进入插入模式,包括
x
字符,cfx
- 删除
motion
跨过的字符,删除但不进入插入模式d{motion}
- 删除
motion
跨过的字符,删除但不进入插入模式,不包括x
字符dtx
- 删除当前字符到下一个字符处的所有字符,包括
x
字符dfx
- 如果只是复制的情况时,将12-17条中的
c
或d
改为y
- 删除到行尾可以使用
D
或C
- 拷贝当前行
yy
或者Y
- 删除当前字符
x
- 粘贴
p
- 可以使用多重剪切板,查看状态使用
:reg
,使用剪切板使用"
,例如复制到w
寄存器,"wyy
,或者使用可视模式v"wy
- 重复执行上一个作用使用.
- 使用数字可以跨过
n
个区域,如y3x
,会拷贝光标到第三个x
之间的区域,3j
向下移动3
行 - 在编写代码的时候可以使用
]p
粘贴,这样可以自动进行代码缩进 >>
缩进所有选择的代码<<
反缩进所有选择的代码gd
移动到光标所处的函数或变量的定义处K
在man里搜索光标所在的词- 合并两行
J
- 若不想保存文件,而重新打开
:e!
- 若想打开新文件
:e filename
,然后使用ctrl + ^
进行文件切换
窗口操作
- 分隔一个窗口
:split
或者:vsplit
- 创建一个窗口
:new
或者:vnew
- 在新窗口打开文件
:sf {filename}
- 关闭当前窗口
:close
- 仅保留当前窗口
:only
- 到左边窗口
ctrl + w, h
- 到右边窗口
ctrl + w, l
- 到上边窗口
ctrl + w, k
- 到下边窗口
ctrl + w, j
- 到顶部窗口
ctrl + w, t
- 到底部窗口
ctrl + w, b
宏操作
- 开始记录宏操作
q[a-z]
,按q
结束,保存操作到寄存器[a-z]
中 @[a-z]
执行寄存器[a-z]
中的操作@@
执行最近一次记录的宏操作
可视操作
- 进入块可视模式
ctrl + v
- 进入字符可视模式
v
- 进入行可视模式
V
- 删除选定的块
d
- 删除选定的块然后进入插入模式
c
- 在选中的块同是插入相同的字符
IESC
跳到声明
[[
向前跳到顶格第一个{
[]
向前跳到顶格第一个}
]]
向后跳到顶格的第一个{
]]
向后跳到顶格的第一个}
[{
跳到本代码块的开头]}
跳到本代码块的结尾
挂起操作
- 挂起
Vim ctrl + z
或者:suspend
- 查看任务 在
shell
中输入jobs
- 恢复任务
fg [job number]
(将后台程序放到前台)或者bg [job number]
(将前台程序放到后台) - 执行
shell
命令:!command
- 开启
shell
命令:shell
,退出该shell exit
- 保存vim状态
:mksession name.vim
- 恢复vim状态
:source name.vim
- 启动vim时恢复状态
vim -S name.vim