普通模式
>G 增加当前行到文档末尾处的缩紧层级 $ 移动到本行的末尾 . 相当于一个很小的宏,记住上次的命令,用来重复执行上一次修改 ; 重复查找上一次f命令查找到的字符,和;相反,跳回到上一次查找到的字符 : ex命令 { 跳到段首 } 跳到段尾 ( 跳到句首 ) 跳到句尾 ~ 转换光标上字符的大小写 % 括号匹配 / 在文档里查找下一次匹配 :%s/content/copy/g 将全文中的content替换成copy & 回退本行中的替换 < 减小缩进 > 增加缩进 = 自动缩进 a 在光标后面插入 A 跳到行尾并进入插入模式 b 向前移动一个单词,光标停到单词开头 B 光标跳到前一个单词 c 重复删除多行/多元素,需要配合hjkl来使用,如3cj,2ch C 修改至末尾(删除光标到行尾的所以并进入插入模式) d 删除多行,dd删除一行,2dd删除2行 D 删除光标所行尾,但不进入插入模式 e 跳到单词末尾 E 跳到单词末尾 f 行内字符查找,fs跳到下一个出现s的位置 F 行内字符反向查找,与f的作用查找反向相反 g gg跳到文档的第一行 G 跳到文档末尾 h 右键 H 光标跳到屏幕顶行 i 在光标之前插入 I 到行首插入 j 下键 J 合并两行 k 上键 K 帮助,暂时关闭vim切换到命令行 l 右键 L 光标跳到屏幕底部 m 局部标记光标所在位置,具体不知道怎么用 M 光标跳到屏幕中间 n 查找下一个 N 查找上一个 o 在下一行插入 O 在上一行插入 p 粘贴到下一行 P 粘贴到上一行 q 录制宏,不知道干嘛的 Q 切换到ex模式,不知道干嘛的 r 取代,ra用a将当前光标所在的字符替换,不进入插入模式 R 替换模式,将字符安替换并进入插入模式 s 删除当前光标所在的字符并进入插入模式 S 删除行并进入插入模式 t ti移动光标到当前行,当前光标后面的第一个i前面 T 不知道 u 撤销上一次操作(全文撤销) U 撤销行内命令 v 可视模式,可以直接选择多行 V 可视模式 w 下一个单词 W 下一个单词 x 删除光标所在的字符 X 退格 y yy复制一行,4yy复制4行 z 附加命令 Z 退出 c 重复删除多个数据 cw 删除本行从光标开始到结束的字符,并进入编辑模式重新输入 dw 删除从光标所在到单词结束的 dapw 删除整个单词 dpb 删除从光标开始到单词开头的位置
插入模式
<C u> 删除至行首 <C r>= 做数值计算
可视模式
V 面向行的可视模式 v 面向字符的可视模式 <C v> 面向列的可视模式 gv 重选上次的高亮区域
命令行模式
: 进入命令行模式
:edit 读文件
:write 写文件
:sp 横向分割窗口
:vsp 纵向分割窗口
:[range]delete x 将range指定的范围的行删除到寄存器x中(用;分割范围,下同)
:[range]yank x 将range指定的范围的行复制到寄存器x中
:[line]put x 将寄存器x中的内容粘贴到line指定的行后面
:[range]copy[address] 将range范围内的值拷贝到address指定的行下面
:[range]move[address] 将range范围内的值移动到address指定的行下面
:1 文件的第一行
:$ 文件的最后一行
:0 虚拟行,文件的第一行上方
:. 代表当前行
:![command] 不退出vim执行shell命令,相当于只能执行一次shell命令
:shell 启动一个交互的shell会话,结束后输入exit可回到vim
:read![command] 在shell中执行command命令,但将结果输出到vim中