一:退出vim
    1.q(quit):退出Vi
    2.w(write):存盘
    3.w + 文件名:另存为指定文件
    4.w !+ 文件名:另存为指定文件,如该文件已存在,覆盖已有文件
    5.wq(与:x等价):存盘退出
    6.q!:不存盘退出
    7.wq!:强制存盘退出
    8.ZZ:存盘并退出Vi
二:移动命令
    n上下左右(可以用方向键直接移动)
    h 左,或 Backspace 或 方向键
    j 下,或 回车 或 + 或 方向键
    k 上,或 - 或 方向键
    l 右,或 Space 或 方向键
    移动到行首
        ^ (移至第一个非空字符)或 Home键(移至行首,包括空字符)
    移动到行尾
        $ 或 End键
    移动到当前页的首行
        H
    移动到当前页的中间行
        M
    移动到当前页的最后一行
        L
    以word为单位移动
        w
    显示行号
        :set number 或 :set nu
    移动到第n行
        :n
    向上滚动一屏(即Pagedown)
        Ctrl + b(backward)
    向下滚动一屏(即Pageup
        Ctrl + f (forward)
    屏幕向下滚动一行
        Ctrl + e
三. 删除命令
    删除光标所在行
        dd(delete):删除光标所在行,下一行自动上移
        DD :删除光标所在行,下一行不上移
    删除一个字符
        x:删除光标所在字符
        X:删除光标前的字符
    删除n个字符
        nx:删除从光标处字符开始的n个字符
        nX:删除从行首开始的n个字符
    删除从光标处开始到本行末尾的所有字符
        D
四.复制与粘贴
    yank和put分别对应Windows下的Copy和Paste
    yy(yank):复制当前行
    nyy: 复制多行
    yw:复制一个词
    p(put):粘贴到光标后
    P:粘贴到光标前
    多行复制,粘贴仅能在视窗模式下进行
五.搜索和替换
    n搜索
    /word  向下搜索
    ?word  向上搜索
    n  继续寻找
    N  继续寻找,反向搜索游标所在处的字符
    g*  同*,但部分符合即可
    替换
     :[range]s / pattern / string / [c,e,g,i]
    range:表示范围,如:1,7  1,$  %  #
    pattern:被替换的字符串
    string:替换的字符串
    c(confirm) :替换前询问
    e (error) :不显示error
    g (global) :不询问,整行替换
    i (ignore) :不区分大小写
    eg:%s/Edwin/Edward/g表示在整篇文章中将Edwin替换成Edward;
六、其它
    0 – 到行首
    $ – 到行尾
    ^ – 到行首字母
    ( – 到上面一句或者上面一个代码段
    ) – 到下面一句或者下面一个代码段
    `. – 到最后一次修改的位置,注意这个`不是单引号,是1左边的那个按键
    /<文字> – 搜索指定文字,找到之后使用n来跳到下一个相同单词位置
    :<数值> – 转跳到指定行数
    :$ – 转跳到文件末尾,这个和G的作用相同,但是我觉得更加好记,因为和转跳行数一样,而且$一般被用来标识末尾

    i – 插入模式,I也可以,还有a,A,但是个人感觉提高效率不明显
    o – 在当前行下面建立新行,对应的有O,在当前行上面,但是O很少用,除非你已经到顶行而且要在上面插入一行.

    v – 进入区块选择
    y – 复制已经选择的区块
    yy – 复制当前行
    d – 剪切已经选择的区块
    dd – 剪切当前行
    p – 粘贴已经选择的区块

    . – 重复上次指令
    <数值><指令> – 重复执行指定的指令,例如10dd,剪切10行

    % – 匹配花括号,方括号,括号等,用于例如跳转到对应的{}位置
    gd – 到达光标所在处函数或者变量的定义处
    > – 缩进代码,在v下可用
    >> – 缩进当前行代码
    < – 反缩进代码,在v下可用
    << – 反缩进当前行