From: http://buaadallas.blog.51cto.com/399160/83607
Vim用户手册 - by Bram Moolenaar
   译者:Nek_in 
 [url]http://vimcdoc.sf.net[/url]
   分割窗口
 显示两个不同的文件;或者同时显示一个文件的两个不同地方;又或者并排比较两个文
 件。这一切都可以通过分割窗口实现。
 |08.1| 分割窗口
 |08.2| 用另一个文件分割窗口
 |08.3| 窗口大小
 |08.4| 垂直分割
 |08.5| 移动窗口
 |08.6| 对所有窗口执行命令
 |08.7| 用 vimdiff 显示区别
 |08.8| 杂项
   下一章:|usr_09.txt| 使用 GUI 版本
   前一章:|usr_07.txt| 编辑多个文件
   目录:|usr_toc.txt|
 *08.1* 分割窗口
 最简单的打开新窗口命令是如下:
   :split
 这个命令把屏幕分解成两个窗口并把光标置于上面的窗口中:
   +----------------------------------+
   |/* file one.c */ |
   |~ |
   |~ |
   |one.c=============================|
   |/* file one.c */ |
   |~ |
   |one.c=============================|
   | |
   +----------------------------------+
 你可以看到显示同一个文件的两个窗口。带 "====" 的行是状态条,用来显示它上面的窗
 口的信息。(在实际的屏幕上,状态条用反色显示)
   这两个窗口允许你同时显示一个文件的两个部分。例如,你可以让上面的窗口显示
 变量定义而下面的窗口显示使用这些变量的代码。
 CTRL-W w 命令可以用于在窗口间跳转。如果你在上面的窗口,它会跳转到下面的窗口,
 如果你在下面的窗口,它会跳转到上面的窗口。(CTRL-W CTRL-W 可以完成相同的功能
 这是为了避免你有时按第二次的时候从 CTRL 键上缩手晚了。)
 关 闭 窗 口
 以下命令用于关闭窗口:
   :close
 实际上,任何退出编辑的命令都可以关闭窗口,象 ":quit" 和 "ZZ" 等。但 "close"
 可以避免你在剩下一个窗口的时候不小心退出 Vim 了。
 关 闭 所 有 其 它 窗 口
 如果你已经打开了一整套窗口,但现在只想编辑其中一个,如下命令可以完成这个功能:
   :only
 这个命令关闭除当前窗口外的所有窗口。如果要关闭的窗口中有一个没有存盘,Vim 会
 显示一个错误信息,并且那个窗口不会被关闭。
 *08.2* 用另一个文件分割窗口
 下面命令打开另一个窗口并用该窗口编辑另一个指定的文件:
   :split two.c
 如果你在编辑 one.c,则命令执行的结果是:
   +----------------------------------+
   |/* file two.c */ |
   |~ |
   |~ |
   |two.c=============================|
   |/* file one.c */ |
   |~ |
   |one.c=============================|
   | |
   +----------------------------------+
 要打开窗口编辑一个新文件,可以使用如下命令:
   :new
 你可以重复使用 ":split" 和 ":new" 命令建立任意多的窗口。
 *08.3* 窗口大小
 :split 命令可以接受个数前缀。如果指定了这个前缀,这个数将作为窗口的高度。例如
 如下命令可以打开一个三行的窗口并编辑文件 alpha.c:
   :3split alpha.c
 对于已经打开的窗口,你可以用有几种方法改变它的大小。如果你有鼠标,很简单:把
 鼠标指针移到分割两个窗口的状态栏上,上下拖动即可。
 要扩大窗口:
   CTRL-W +
 要缩小窗口:
   CTRL-W -
 这两个命令接受个数前缀用于指定扩大和缩小的行数。所以 "4 CTRL-W +" 会使窗口增
 高4行。
 要把一个窗口设置为指定的高度,可以用这个命令:
   {height}CTRL-W _
 就是先输入一个数值,然后输入 CTRL-W 和一个下划线(在美式英语键盘中就是 Shift
 加上 "-")。
   要把一个窗口扩展到尽可能大,可以使用无个数前缀的 CTRL-W _ 命令。
 使 用 鼠 标
 在 Vim 中,你可以用键盘很快完成很多工作。但很不幸,改变窗口大小要敲不少键。在
 这种情况下,使用鼠标会更快一些。把鼠标指针移到状态条上,按住左键并拖动。状态
 条会随之移动,这会使一个窗口更大一个更小。
 选 项
 'winheight' 选项设置最小的期望窗口高度而 'winminheight' 选项设置最小的 "硬性"
 高度。
   同样,'winwidth' 设置最小期望宽度而 'winminwidth' 设置为最小硬性宽度。
   'equalalways' 选项使所有的窗口在关闭或者打开新窗口的时候总保持相同大小。
 *08.4* 垂直分割
 ":split"命令在当前窗口的上面建立窗口。要在窗口左边打开新窗口,用这个命令:
   :vsplit
 或者
   :vsplit two.c
 这个命令的结果如下:
   +--------------------------------------+
   |/* file two.c */ |/* file one.c */ |
   |~ |~ |
   |~ |~ |
   |~ |~ |
   |two.c===============one.c=============|
   | |
   +--------------------------------------+
 实际中,中间的竖线会以反色显示。这称为垂直分割线。它左右分割一个窗口。
 还有一个 "vnew" 命令,用于打开一个垂直分割的新窗口。还有一种方法是:
   :vertical new
 "vertical" 命令可以放在任何分割窗口的命令的前面。这会在分割窗口的时候用垂直
 分割取代水平分割。(如果命令不分割窗口,这个前缀不起作用)。
 在 窗 口 间 跳 转
 由于你可以用垂直分割和水平分割命令打开任意多的窗口,你就能够任意设置窗口的布局。
 接着,你可以用下面的命令在窗口之间跳转:
   CTRL-W h 跳转到左边的窗口
   CTRL-W j 跳转到下面的窗口
   CTRL-W k 跳转到上面的窗口
   CTRL-W l 跳转到右边的窗口
   CTRL-W t 跳转到最顶上的窗口
   CTRL-W b 跳转到最底下的窗口
 你可能已经注意到这里使用移动光标一样的命令用于跳转窗口。如果你喜欢,改用方向
 键也行。
   还有其它命令可以跳转到别的窗口,参见:|Q_wi|。
 *08.5* 移动窗口
 你已经分割了一些窗口,但现在的位置不正确。这时,你需要一个命令用于移动窗口。
 例如,你已经打开了三个窗口,象这样:
   +----------------------------------+
   |/* file two.c */ |
   |~ |
   |~ |
   |two.c=============================|
   |/* file three.c */ |
   |~ |
   |~ |
   |three.c===========================|
   |/* file one.c */ |
   |~ |
   |one.c=============================|
   | |
   +----------------------------------+
 显然,最后一个窗口应该在最上面。移动到那个窗口 (用 CTRL-W w)并输入如下命令:
   CTRL-W K
 这里使用大写的 K。这样窗口将被移到最上面。你可以注意到,这里有用 K 表示向上
 移动了。
   如果你用的是垂直分割,CTRL-W K 会使当前窗口移动到上面并扩展到整屏的宽度。
 假设你的布局如下:
   +-------------------------------------------+
   |/* two.c */ |/* three.c */ |/* one.c */ |
   |~ |~ |~ |
   |~ |~ |~ |
   |~ |~ |~ |
   |~ |~ |~ |
   |~ |~ |~ |
   |two.c=========three.c=========one.c========|
   | |
   +-------------------------------------------+
 当你在中间的窗口(three.c)中使用 CTRL-W K 后,结果会是:
   +-------------------------------------------+
   |/* three.c */ |
   |~ |
   |~ |
   |three.c====================================|
   |/* two.c */ |/* one.c */ |
   |~ |~ |
   |two.c==================one.c===============|
   | |
   +-------------------------------------------+
 还有三个相似的命令(估计你已经猜出来了):
   CTRL-W H 把当前窗口移到最左边
   CTRL-W J 把当前窗口移到最下边
   CTRL-W L 把当前窗口移到最右边
 *08.6* 对所有窗口执行命令
 你打开了几个窗口,现在你想退出 Vim,你可以分别关闭每一个窗口。更快的方法是:
   :qall
 这表示 "quit all"(全部退出)。如果任何一个窗口没有存盘,Vim 都不会退出。同时
 光标会自动跳到那个窗口,你可以用 ":write" 命令保存该文件或者 ":quit!" 放弃修改。
 如果你知道有窗口被改了,而你想全部保存,则执行如下命令:
   :wall
 这表示 "write all"(全部保存)。但实际上,它只会保存修改过的文件。Vim 知道保
 存一个没有修改过的文件是没有意义的。
   另外,还有 ":qall" 和 "wall" 的组合命令:
   :wqall
 这会保存所有修改过的文件并退出 Vim 。
   最后,下面的命令由于退出 Vim 并放弃所有修改:
   :qall!
 注意,这个命令是不能撤消的。
 为 所 有 的 参 数 打 开 窗 口
 要让 Vim 为每个文件打开一个窗口,可以使用 "-o" 参数:
   vim -o one.txt two.txt three.txt
 这个结果会是:
   +-------------------------------+
   |file one.txt |
   |~ |
   |one.txt========================|
   |file two.txt |
   |~ |
   |two.txt========================|
   |file three.txt |
   |~ |
   |three.txt======================|
   | |
   +-------------------------------+
 "-o" 参数用于垂直分割窗口。
   如果 Vim 已经启动了,可以使用 ":all" 命令为参数列表中的每个文件打开一个窗
 口。":vertical all" 以垂直分割的方法打开窗口。
 *08.7* 用 vimdiff 显示区别
 有一种特殊的启动 Vim 的方法可以用来显示两个文件的区别。让我们打开一个 "main.c"
 并插入一些字符。在设置了 'backup' 选项的情况下保存这个文件,以便产生 "main.c~"
 备份文件。
   在命令行中输入如下命令:(不是在Vim中)
   vimdiff main.c~ main.c
 Vim 会用垂直分割的方式打开两个文件。你只能看到你修改过的地方和上下几行的地方。
   VV VV
   +-----------------------------------------+
   |+ +--123 lines: /* a|+ +--123 lines: /* a|