打开一个新窗口
最简单的打开新窗口的方法是
:split
它把一个窗口分成两个,光标留在上面的那个窗口中。
通过
Ctrl-w+方向键
来在窗口间切换
比如
Ctrl-ww 或 Ctrl-w Ctrl-w
切换到下一个窗口;
Ctrl-wj 和 Ctrl-wk
分别切换到下一个窗口和上一个窗口。
要关闭窗口,用
:q 或 ZZ 或 Ctrl-wc
找开一个新窗口并在其中打开一个文件
:split 文件名
也可以给split命令分配一个初始命令,也就是说执行完split接着要做的
:split +命令 文件名
比如
:split +/printf three.c
命令会把当前窗口分成两个然后在上面的窗口中查找printf这个字符串。
控制窗口大小
如果给split命令指定一个参数,则表示新找开窗口的高度
比如
:3split alpha.c
打开一个高度为3的窗口并在其中打开alpha.c
:new命令
:new
命令用起来就跟split差不多,只有一点不同:new命令会在新窗口中新建一个文件,而split只是在新窗口中打开原窗口中的内容。
分割并查看(Split and View)
:sview
命令新建一个窗口并且其中的内容是只读的。
改变窗口大小
行数Ctrl-w+
把当前窗口高度增加”行数”行(如不指定行数,默认为1)
行数Ctrl-w-
把当前窗口高度减少”行数”行(如不指定行数,默认为1)
Ctrl-w=
让所有窗口一样高
行数Ctrl-w_
把当前窗口的高度设为”行数“,如不指定则把它最大化。
缓冲
Vim用缓冲来代表一个文件。当你在编缉一个文件时,只是在编缉它的缓冲。当你完成编辑保存时,Vim把缓冲中的内容保存进文件。当然,事情并不是
这么简单。在Vim中设置的标记之类的也保存在缓冲中。你可以同时拥有多个缓冲,当你编辑多个文件时就是这样。当你想要一个Vim窗口,并且想编辑多个文
件时,把这个窗口最大化是不管用的,因为这不是一个窗口,其它的窗口还是能看得见的。此时你可以把不编辑的缓冲隐藏(hide),用命令
:hide
一个缓冲有三种可能的状态:
活动:显示在屏幕上的窗口
隐藏:没有显示在屏幕上的在编辑的缓冲
不活动:缓冲没有在编辑,但是保存着它的信息
第三种状态需要多解释一下,当你编辑另一个文件时,当前文件的内容就没有用了。Vim就关掉它。但是它的一些其它信息可能还有用。(这一部分比较混乱,原文说得也不是很清楚,不懂也无所谓)
要查看缓冲的列表,用
:buffers
命令。输出的第一列是缓冲编号,第二列是状态,第三列是与缓冲对应的文件。
状态共且以下几种:
- 不活动的缓冲
h 隐藏的缓冲
% 当前缓冲
# 其它缓冲
+ 文件被编辑而未保存
选择一个缓冲
:buffer 缓冲编号
如果你不知道缓冲的编号,可以用
:buffer 文件名
下面的命令分割窗品并编辑指定的缓冲
:sbuffer 缓冲编号
或
:sbuffer 文件名
还有很多关于缓冲的命令:
:bnext 去下一个缓冲
:count bnext 执行count次去下一个缓冲
:count sbnext 先分割窗口,然后执行:count bnext
:count bprevious 去上一个缓冲。如果指定了count,则执行count次
:count sbprevious 先分割窗口,然后执行:count bprevious
:count bNext 同:count bprevious
:count sbNext 同:count sbprevious
:blast 去最后一个缓冲
:sblast 先分割窗口再执行:blast
:brewind 去第一个窗口
:sbrewind 先分割窗口再执行:brewind
:bmodified count 去第count个编辑过的缓冲
:sbmodified count 等于:split加:bmodified
缓冲选项
通常当所有编辑一个文件的窗口都关掉后,这个窗口的缓冲就变成”不活动”,如果不想这样,可以设置
:set hidden
让它变成隐藏而不是不活动。
通常分割/缓冲相关的命令会分割当前窗口,但是也可以让Vim在已经有窗口打开所指定的缓冲时,切换到那个窗口而不是新建一个:
:set switchbuf=useopen
更多关于switchbuf的内容参见23章。