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将全文所有匹配项替换