1 Vim的几种模式
正常模式:可以使用快捷键命令,或按:输入命令行。
插入模式:可以输入文本,在正常模式下,按i、a、o等都可以进入插入模式。
可视模式:正常模式下按v可以进入可视模式, 在可视模式下,移动光标可以选择文本。按V进入可视行模式, 总是整行整行的选中。ctrl+v进入可视块模式。
替换模式:正常模式下,按R进入。

  1. 启动Vim
    vim +num file: 从第num行开始;

  2. 文档操作
    :e file --关闭当前编辑的文件,并开启新的文件。 如果对当前文件的修改未保存,vi会警告。
    :e#或ctrl+^ -- 回到刚才编辑的文件,很实用。
    :f或ctrl+g -- 显示文档名,是否修改,和光标位置。
    :f filename -- 改变编辑的文件名,这时再保存相当于另存为。
    gf -- 打开以光标所在字符串为文件名的文件。
    :saveas newfilename -- 另存为

    :browse e -- 会打开一个文件浏览器让你选择要编辑的文件。 如果是终端中,则会打开netrw的文件浏览窗口; 如果是gvim,则会打开一个图形界面的浏览窗口。 实际上:browse后可以跟任何编辑文档的命令,如sp等。 用browse打开的起始目录可以由browsedir来设置:
    :set browsedir=last -- 用上次访问过的目录(默认);
    :set browsedir=buffer -- 用当前文件所在目录;
    :set browsedir=current -- 用当前工作目录;

    :Sex -- 水平分割一个窗口,浏览文件系统;
    :Vex -- 垂直分割一个窗口,浏览文件系统;

4.2 翻屏
ctrl+f: 下翻一屏。
ctrl+b: 上翻一屏。
ctrl+d: 下翻半屏。
ctrl+u: 上翻半屏。
ctrl+e: 向下滚动一行。
ctrl+y: 向上滚动一行。
n%: 到文件n%的位置。
zz: 将当前行移动到屏幕中央。
zt: 将当前行移动到屏幕顶端。
zb: 将当前行移动到屏幕底端。

4.3 标记
m{a-z}: 标记光标所在位置,局部标记,只用于当前文件。
m{A-Z}: 标记光标所在位置,全局标记。标记之后,退出Vim, 重新启动,标记仍然有效。
{a-z}: 移动到标记位置。<br/>'{a-z}: 移动到标记行的行首。<br/>{0-9}:回到上[2-10]次关闭vim时最后离开的位置。
:marks 显示所有标记。

:delmarks a b -- 删除标记a和b。
:delmarks a-c -- 删除标记a、b和c。
:delmarks a c-f -- 删除标记a、c、d、e、f。
:delmarks! -- 删除当前缓冲区的所有标记。
:help mark-motions 查看更多关于mark的知识。

5.1 基本插入
i: 在光标前插入;一个小技巧:按8,再按i,进入插入模式,输入=, 按esc进入命令模式,就会出现8个=。 这在插入分割线时非常有用,如30i+<esc>就插入了36个+组成的分割线。

插入位置的区别: 
    i:光标前   I 行首
    a:光标后   A 行尾
    o: 在下面新建一行插入;O: 在上面新建一行插入;

7.2 替换
:%s/old/new/g - 用new替换文件中所有的old。

:%s/^/xxx/g - 在每一行的行首插入xxx,^表示行首。
:%s/$/xxx/g - 在每一行的行尾插入xxx,$表示行尾。
所有替换命令末尾加上c,每个替换都将需要用户确认。 如:%s/old/new/gc,加上i则忽略大小写(ignore)。

8.1 基本排版
<< 向左缩进一个shiftwidth

向右缩进一个shiftwidth

9.1 一次编辑多个文件
我们可以一次打开多个文件,如 vi a.txt b.txt c.txt
使用:next(:n)编辑下一个文件。
:2n 编辑下2个文件。
使用:previous或:N编辑上一个文件。
使用:args 显示文件列表。
vi -o filenames 在水平分割的多个窗口中编辑多个文件。
vi -O filenames 在垂直分割的多个窗口中编辑多个文件。

  1. 纵向操作
    ctrl-v后状态栏上出现 VISUAL BLOCK 字样,即进入纵向编辑模式。
    r 进入修改模式/I 进入行首插入模式/A 进入行尾插入模式
    Esc完成