vi 有时候可以用特殊的方式来显示你编辑的文件,例如多个窗口等。这里就将这类相关的命令集中了。
让vi显示多个窗口(多缓冲区)
水平分割当前窗口
输入 :split
。
或输入 :sp
。
这样窗口会分为上下两部份,可以继续分割;之后在某一个窗口下,可以用 :n filename
或者 :e filename
在这个窗口内载入新文件。
垂直分割当前窗口
输入 :vsplit
。
这样窗口会分为左右两部份,可以继续分割;之后在某一个窗口下,可以用 :n filename
或者 :e filename
在这个窗口内载入新文件。
一次打开多个窗口
输入 vi -on file1 file2
。
这里只用两个文件举例,同时打开file1和file2,打开的窗口按水平方向分为上下两部份。
在多窗口内操作
在上次和本次窗口间切换
输入 [Ctrl]w w
。
跳到左边的窗口
输入 [Ctrl]w h
。
或输入 [Ctrl]w [Left]
。
最后一个键表示移动方向,和移动光标类似。
跳到右边的窗口
输入 [Ctrl]w l
。
或输入 [Ctrl]w [right]
。
最后一个键表示移动方向,和移动光标类似。
跳到上边的窗口
输入 [Ctrl]w k
。
或输入 [Ctrl]w [up]
。
最后一个键表示移动方向,和移动光标类似。
跳到下边的窗口
输入 [Ctrl]w j
。
或输入 [Ctrl]w [down]
。
最后一个键表示移动方向,和移动光标类似。
扩大当前水平窗口
输入 [Ctrl]w +
。
这里‘+’前面可以加输入一个数字,表示迭代次数。
缩小当前水平窗口
输入 [Ctrl]w -
。
这里‘-’前面可以加输入一个数字,表示迭代次数。
扩大当前垂直窗口
输入 [Ctrl]w >
。
这里‘>’前面可以加输入一个数字,表示迭代次数。
缩小当前垂直窗口
输入 [Ctrl]w <
。
这里‘<’前面可以加输入一个数字,表示迭代次数。
最大化当前水平窗口
输入 [Ctrl]w _
。
最大化当前垂直窗口
输入 [Ctrl]w |
。
平分窗口
输入 [Ctrl]w
= 。
水平分割窗口
输入 [Ctrl]w s
.
垂直分割窗口
输入 [Ctrl]w v
.
退出当前窗口
输入 :q
.
退出并保存当前窗口
输入 :wq
.
退出全部窗口
输入 :qa
.
退出并保存全部窗口
输入 wqa
.
移动窗口
上下左右移动窗口位置的命令,是CTRL-W J/K/H/L (:help CTRL-W_H, …)。前提是开了多个窗口(:split或:vsplit)。注意,这里的H, J, K, L是大写的,小写的则表示移动到相应的窗口里面了.
将窗口移动到左面
输入 [Ctrl]w H
.
将窗口移动到右面
输入 [Ctrl]w L
.
将窗口移动到上面
输入 [Ctrl]w K
.
将窗口移动到下面
输入 [Ctrl]w J
.
颜色相关
改变颜色主题(为evening)
输入 color evening
。
或输入 colorscheme evening
。
改变主题颜色为默认
输入 color default
。
或输入 colorscheme default
。
pages tab标签打开多文件
自从Vim发布7.0之后, 就开始支持标签或者叫标签页. 不像其它程序中的普通标签, Vim的标签页就像是将你打开的文件分组的一种方法. 每个标签能够保存几个打开的缓冲, 并且也能同时处理几个窗口. 实际上一个标签中用 yy
在另一个page中也可以p上去的。这里给出常用命令,更多帮助可以查看:help tabpage。
启动的时候为每一个文件打开新的page
输入 vi -p file1 file2
注意:这里file1,file2是文件。
打新page
输入 tabnew
。
在当前tab page的后面打开一个新的空窗口的tab page.
打新page并且编辑file
输入 tabnew file
打开新page并执行命令
输入 [count] tab {cmd}
.
这里,新的tabpage在后面第[count]个page上面出现, :0tab {cmd}
将会在第一个位置得到一个新的标签.
:tab split
使用一个新的标签页打开当前的缓存,即把split的分割窗口放到两个pages里面了。
:tab help gt
打开一个tab page 同时执行了 :help gt
命令.
打开新page,并编辑在cursor下的文件
输入 CTRL-W gf
。
关闭tab page
当关闭最后一个窗口的时候也会关闭这个标签页命令如下。
关闭当前page
输入 :tabclose!
。
这里加'!'是强制关闭不管保存了,tabclose可以简化为tabc,实践发现 :q
也行。
关闭编号为{count}的page
输入 :tabclose count
。
或输入 :tabclose! count
。
这里加'!'是强制关闭不管保存了,tabclose可以简化为tabc。
关闭除了自身的其他pages
输入 tabonly
。
或输入 tabonly!
。
这里加'!'是强制关闭不管保存了,tabonly可以简化为tabo。
切换到另外page
切换到下一个page
输入 gt
。
或输入 :tabnext
。
或输入 [Ctrl]PageDown
。
这里,tabnext可以简化为tabn,都是循环切换的最后一个之后就是第1个(第3个方法好像不管用?)。
切换到第{count}号page
输入 {count}gt
。
或输入 :tabnext {count}
。
或输入 {count}[Ctrl]PageDown
。
这里,tabnext可以简化为tabn,第一个page是1,都是循环切换的(第3个方法好像不管用?)。
切换到上一个page
输入 gT
。
或输入 :tabprevious
。
或输入 :tabN[ext]
。
或输入 [Ctrl]PageUp
。
这里,tabprevious可简化为tabp,tabNext可简化为tabN,没有tabP,切换循环,第1个之后就是最后一个(第4个方法好像不管用?).
切换到前{count}个page
输入 {count}gT
。
或输入 :tabprevious{count}
。
或输入 :tabNext{count}
。
或输入 {count}[Ctrl]PageUp
。
也就是后退{count} page,也是循环的,tabprevious可简化为tabp,tabNext可简化为tabN(第4个方法好像不管用?)。
去第一个page
输入 :tabfirst
。
这里tabfirst可简化为tabfir。
去最后一个page
输入 :tablast
。
这里tablast可简化为tabl。
列出所有pages它们包含的windows
输入 :tabs
。
这里结果中 >
是当前的window, +
是被修改的缓存。
移动当前page到第N个后面
输入 tabmove[N]
。
这里,tabmove可以简化为tabm使用0表示移动当前page成为第1个,不使用N表示当前page成为最后一个。
在每一个page 中执行命令{cmd}
输入 :tabd[o] {cmd}
。
注意的是:它只执行每个page的当前窗口,如果有一个窗口出现了错误,那么就中断后面的访问。
这里,tabdo可以简化为tabd。
文件浏览
在vim 7.0以前,文件浏览功能由explorer.vim插件提供,在vim 7.0中,这个插件被netrw.vim插件所代替。这里说得是netrw.vim插件。使用vim尝试打开目录时,vim会自动调用netrw.vim插件打开该目录。
打开当前文件的目录
输入 :E
。
水平分割窗口,并打开当前文件目录
输入 :He
。
或输入 :Se
。
垂直分割窗口,并打开当前文件目录
输入 :Ve
。
在前一个窗口打开文件
输入 :P
。
这里,假设光标在目录的某一个文件上面,则在上次打开的窗口打开该文件(适合多文件窗口).
新开一个垂直窗口,打开该文件
输入 :v
。
假设光标在目录的某一个文件上面,则新开一个垂直窗口,打开该文件。
新开一个水平窗口预览文件
输入 :p
。
假设光标在目录的某一个文件上面,新开一个水平窗口预览文件,光标仍在该目录中,如果换其他文件再按p则仍在上面的预览窗口中显示新文件
新开一个标签打开文件
输入 :t
。
假设光标在目录的某一个文件上面,新开一个标签打开文件。
以不同模式显示目录中文件
输入 i
。
这里,直接输入i就以不同的模式循环切换显示目录中的文件,如树型,列表等等。
更多的命令查看帮助
输入: [F1]
下面,列出一些简短的常用操作:
> 显示帮助
> 如果回车,光标下为目录,则进入该目录;光标下是文件,则打开该文件
> - 返回上级目录
> c 切换vim的当前工作目录为正在浏览的目录
> d 创建目录
> D 删除文件或目录
> i 切换显示方式
> R 改名文件或目录
> s 选择排序方式
> x 定制浏览方式,使用你指定的程序打开该文件
关于历史窗口
打开命令历史
输入 q:
.
这样,就可以打开命令历史窗口,查看以前输入过的命令行命令(就是在 :
提示符号后面输入的命令)。选择其中的任何一个回车,相应的命令都会被执行。在最后一个空行上面回车就退出相应窗口。
打开查找历史
输入 q/
.
这样,就可以打开查找历史窗口,查看以前查找过的字符串。选择其中的任何一个回车,相应的查找都会被执行。在最后一个空行上面回车就退出相应窗口。