Vim总共分为普通模式、插入模式(insert)、替换模式(replace)、可视模式(visual)、命令模式。Vim启动后即进入普通模式,在其它模式下,按
Esc
可退回到普通模式。
普通模式
普通模式下命令可分为以下三类:
光标命令 指移动光标的命令。有以下特性:
输入这些命令前,可以先输入一个数字,用来指定连续执行的次数。如:<command><command><command>
等价于3<command>
。 这些命令可以作为含参命令的参数,用来指定含参命令的作用范围。 立即命令 指按下命令键后,无需再输入参数,便立即做出反应的命令。有以下特性:
含参命令 指按下命令键后,需要再输入参数,才能做出反应的命令。有以下特性:
同光标命令,在输入前可输入一个数字。 后跟参数可为光标命令(记作<end_position>
),记当前光标位置为<start_position>
,则该命令作用范围是<start_position>
至<end_position>
。 后跟参数也可为该命令的重复,此时作用范围为光标所在的一行。
光标命令
字符级移动
单词级移动
命令 含义 w
或 W
移动至下一个单词的第一个字符处 b
或 B
移动至光标所在单词的第一个字符处;若已在此处,则移动至上一个单词的第一个字符处 e
或 E
移动至光标所在单词的最后一个字符处;若已在此处,则移动至下一个单词的最后一个字符处
W
、B
、E
以不可见字符( \s
)作为划分单词的依据;w
、b
、e
以非单词字符( \W
即 [\^0-9a-zA-Z_]
)作为划分单词的依据。
行级移动
命令 含义 0
移动至本行行首 $
移动至本行行尾 ^
移动至本行第一个非空字符 +
移动至下一行行首 -
移动至上一行行首
文段级移动
命令 含义 (
移动至当前句子开头;若已在此处,则移动至上一句的开头 )
移动至当前句子结尾;若已在此处,则移动至下一句的开头 {
移动至当前段落开头;若已在此处,则移动至上一段的开头 }
移动至当前段落结尾;若已在此处,则移动至下一段的结尾
屏幕级移动
命令 含义 H
移动至本屏首行行首 M
移动至本屏中间一行的行首 L
移动至本屏尾行行首
文件级移动
命令 含义 gg
移动至文件首行行首 G
移动至文件尾行行首 4G
移动至文件第四行行首
屏幕行移动
当某行的字符数过多,为适应屏幕宽度而回绕时,该行在屏幕上占据两行;实际上占据一行。
命令 含义 gj
移动至上一屏幕行 gk
移动至下一屏幕行 g0
移动至本屏幕行行首 g$
移动至本屏幕行行尾 g^
移动至本屏幕行第一个非空字符处
匹配移动
命令 含义 *
移动至与光标所在单词相匹配的下一个单词 #
移动至与光标所在单词想匹配的上一个单词 %
移动至另一个括号符(支持的括号符为 ( ) [ ] { } )
查找式移动
命令 含义 /
向后查找 ?
向前查找 n
若有多项符合查找要求,按此键则移动至下一项 N
若有多项符合查找要求,按此键则移动至上一项
拷贝、剪切和粘贴
下表中除y
和d
外其余皆为立即命令
命令 含义 y
拷贝(含参命令) Y
拷贝当前行 d
剪切(含参命令) D
从当前光标位置起剪切至行尾 x
剪切光标处字符 X
剪切光标前字符 p
向后粘贴 P
向前粘贴
现对含参命令进行举例。根据含参命令的特性可知:yy
等价于Y
;y$
表示拷贝从光标位置至行尾的内容;y4e
表示拷贝从光标位置开始至其后的第4个单词结尾的内容。 Vim 支持将拷贝或剪切的内容存入一个变量(a
至z
)中,在需要的时候从某个变量中取出粘贴。使用变量时需先输入"
声明变量,如:"aY
表示拷贝当前行的内容放入变量a
中;"bp
表示向后粘贴变量b
中的内容。
缩进
大小写转换
命令 含义 gu
转为小写(含参命令) gU
转为大写(含参命令)
合并
撤销
标记点
命令 含义 m
声明标记点 \`
跳转到标记点 '
跳转到标记点的行首
Vim支持26个局部标记点(a
至z
)和26个全局标记点(A
至Z
),局部标记点仅限于当前文件内,全局标记点可跨文件跳转。如:ma
表示将当前光标处声明为局部标记点a
;\`a
表示跳转到标记点a
处,'A
表示跳转到全局标记点A
处的行首(可能发生文件跳转)。
保存和退出
屏幕视图切换
命令 含义 zt
将光标所在行滚动至屏幕顶端 zz
将光标所在行滚动至屏幕中间 zb
将光标所在行滚动至屏幕底端 Ctrl + f
向上翻页 Ctrl + b
向下翻页 Ctrl + e
向上滚动一行 Ctrl + y
向下滚动一行
插入模式
下表中除c
外其余皆为立即命令
命令 含义 i
在当前位置的左侧插入 a
在当前位置的右侧插入 I
在当前行行首插入 A
在当前行行尾插入 o
在当前行之下插入新一行 O
在当前行之上插入新一行 s
删除当前字符并插入 S
删除当前行并插入 c
删除并插入(含参命令) C
删除从光标开始至行尾的内容并插入
替换模式
命令模式
保存和退出
命令 含义 :w
保存 :w!
强制保存(应用于只读文件,且用户有修改权限) :q
退出 :q!
强制退出(退出且不保存修改时) :wq
保存并退出 :wq!
强制保存并退出(应用于只读文件,且用户有修改权限)
设置
命令 含义 :set nu
显示行号 :set nonu
不显示行号
查找和替换
命令 含义 /<regular_expression>
查找(<regular_expression>
为正则表达式,此时按n
光标移动到下一匹配项;按N
光标移动到上一匹配项) :s/<regular_expression>/<string>
将当前行第一个匹配项替换为<string>
:s/<regular_expression>/<string>/g
将当前行所有匹配项替换 :%s/<regular_expression>/<string>
将各行第一个匹配项替换 :%s/<regular_expression>/<string>/g
将全文所有匹配项替换