1、按Esc处于命令模式

    最后一行输:wq 保存文件并退出

2、命令模式切换到文本输入模式

    i:在光标左侧输入文本  L:在行开头输入正文

    a:光标右侧               A:行末尾输入

    o:增加一行 光标位于下一行开头 O:增加一行,光标位于上一行开头

3、

命令模式下  dd删除光标所在行  u撤销最近修改  U撤销对当前行所有修改 r替换光标上字符 R替换从光标位置开始的字符 同时切换为文本模式(改写overwrite)

:q 如果since last change没save会提醒而不退出否则直接退出

:q!强行退出

:w保存

:wq保存并退出

:ZZ保存并退出

4、

.命令重复上次操作

5、vim a.cpp

    :r b.cpp

在a.cpp光标所在处插入b.cpp里面的文件

6、:e a.cpp 显示a.cpp

7、:12,34 w b.cpp  把a.cpp的12到34行写到b.cpp里

8、d$  删除从光标位置开始到当前行尾的文本

D 删除自当前光标至行尾的内容("d$"的快捷命令)

    d0 删除光标位置之前到行首的文本

diw 删除当前光标所在的word(不包括空白字符)

 daw 删除当前光标所在的word(包括空白字符)

9、

这就是说:
1、v+移动光标可以选中文本。(上下左右键)
2、y可以复制已经选中的文本
3、p可以粘贴
p/P命令,这两个命令是粘贴的意思,分别表示在当前字符的前/后粘帖前面使用y/d复制或者剪切的内容。  
 
复制一行则:yy
复制当前光标所在的位置到行尾:y$
复制当前光标所在的位置到行首:y^
复制三行则:3yy,即从当前光标+下两行。
 
剪切文本:
用v选中文本之后可以按y进行复制,如果按d就表示剪切,之后按p进行粘贴。
 
剪切一行:dd
剪切当前行光标所在的位置到行尾:d$
剪切当前行光标所在的位置到行首:d^
前切三行:3dd,即从当前行+下两行被剪切了。
10、Ctrl + v   从光标当前位置开始,选中光标起点和终点所构成的矩形区域,再按一下Ctrl + v结束。 
11、ggVG 选中全部的文本, 其中gg为跳到行首,V选中整行,G末尾
12、d   删除 
      y   复制 (默认是复制到"寄存器)  
      p  粘贴 (默认从"寄存器取出内容粘贴) 
      x  删除光标所在的文本
13、u 撤销 ctrl+R 重做
14、使用命令计数
  假设你要向上移动9行。这可以用"kkkkkkkkk"或"9k"来完成。事实上,很多命令都可以接受一个数字作为重复执行同一命令的次数。比如刚才的例子,要在行尾追加三个感叹号,当时用的命令是"a!!!"。另一个办法是用"3a!"命令。3说明该命令将被重复执行3次。同样,删除3个字符可以用"3x"。指定的数字要紧挨在它所要修饰的命令前面。
 
比如9ctrl+方向键
15、移动到行首或行尾
  "$"命令将光标移动到当前行行尾。如果你的键盘上有一个键,它的作用也一样。"^"命令将光标移动到当前行的第一个非空白字符上。"0"命令则总是把光标移动到当前行的第一个字符上。
16、以匹配一个括号为目的移动
  用命令"%"跳转到与当前光标下的括号相匹配的那一个括号上去。如果当前光标在"("上,它就向前跳转到与它匹配的")"上,如果当前在")"上,它就向后自动跳转到匹配的"("
17、gg跳到第一行
V选中当前行 G跳到最后一行
33G跳到第33行
18、H跳到当前页面的第一行 M跳到当前页面的中间 L跳到当前页面的最后
19、滚屏
ctrl+E向下滑动 光标所在位置不变
ctrl+Y向上滑动 光标所在位置不变
ctrl+B向前滚屏
ctrl+F向后滚屏
20、搜索
/string
所有匹配的会高亮
n显示下一个,N显示上一个
3n显示后面的第三个,4N显示上面的第三个
:noh取消高亮
21、替换
r 和 R
22、dgg表示删除文本到文件头,dG表示删除文本到文件尾
23、编辑另一个文件
  用命令":edit foo.txt",也可简写为":e foo.txt"。
24、文件列表
  可以在启动Vim时就指定要编辑多个文件,用命令"vim one.c two.c three.c"。Vim将在启动后只显示第一个文件,完成该文件的编辑后,可以用令:":next"或":n"要保存工作成果并继续下一个文件的编辑,命令:":wnext"或":wn"可以合并这一过程。
25、另存为
  将现有文件存成新的文件,用命令":sav(eas) move.c"
26、纵向上分割一个窗口
  打开一个新窗口最简单的办法就是使用命令:":split"。CTRL-W 命令可以切换当前活动窗口。
split出来的还是原来的窗口
:split a.cpp 
27、横向上分割窗口
:vsplit a.cpp
28、针对所有窗口操作的命令
  ":qall"放弃所有操作并退出,":wall"保存所有,":wqall"保存所有并退出。
为每一个文件打开一个窗口
  使用"-o"选项可以让Vim为每一个文件打开一个窗口:
"vim -o one.txt two.txt three.txt"。
29、:sh   进入shell环境,使用exit退出,回到编辑器中。
:%d删除整个缓冲区
:10,20d   删除第10行至第20行的资料。
:10d   删除第10行的资料。
:%d   删除整个编辑缓冲区。
30、多标签 tab
:tabedit d.cpp 新建标签并建立一个d.cpp的文件
:tabnew新建标签
:tabclose关闭标签
gt下一tab
gT上一tab
31、单词定位
e/b往前/后移一个词,e命令移到到下个单词后会定位到单词的最后一个字符,b命令移到开头(begin)
32、h 向左 l 向右 k 向上 j 向下
33、[[ 搜索上一个段落(函数) ]]搜索下一个段落
34、:34表示跳到第34行
35、跳转
在文件的某个位置使用ma, 然后在文件的另一个位置'a之后就跳当刚才使用ma记录的位置。 
mb 'b(只能在一个文件中  不能是同一个标签或是同一个窗口
36、'. 跳到上一次文本被修改的地方
'' 跳回上一次跳转的地方
37、d/c/y是删除/修改/复制命令,之所以把这三个命令放在一组介绍是以为这三个命令都可以和前面介绍的移动跳转等命令一起使用,比如dd/yy表示删除/复制一行,dw/cw/yw是删除/修改/复制一个单词,d$/c$/y$表示删除/修改/复制到行末,d^/y^表示删除/复制到行首,c0表示修改到行首(包括空格)
38、diw, yiw, ciw, viw 删除(复制,改变,选中)光标所在单词
39、/string\C \C表示大小写相关(全字匹配)
40、{ 转到上一个空行
} 转到下一个空行
* 转到当前光标所指的单词下一次出现的地方
# 转到当前光标所指的单词上一次出现的地方