多文件编辑
vim一次可以打开多个文件
vim <文件...> -》 在同一个窗口中编辑多个文件
vim -o <文件...> -》 在水平分割的多个窗口中编辑多个文件
vim -O <文件...> -》 在垂直分割的多个窗口中编辑多个文件
快捷键 |
功能 |
:f FILENAME |
重命名当前窗口 |
:n[ext] |
编辑下一个文件 |
:2n |
编辑后面第2个文件,依次类推 |
:N |
编辑上一个文件 |
:2N |
编辑前面第2个文件,依次类推 |
:wnext |
保存当前文件,并编辑下一个文件 |
:wprevious |
保存当前文件,并编辑上一个文件 |
:args |
显示文件列表 |
:n FILENAMES |
指定新的文件列表 |
:args FILENAMES |
指定新的文件列表 |
多标签编辑
vim一次可以打开多个标签页,每个文件一个标签页
vim -p <文件...>
快捷键 |
功能 |
:tabe |
如果加文件名,就在新的标签中打开这个文件,否则打开一个空缓冲区 |
:tabnew |
如果加文件名,就在新的标签中打开这个文件,否则打开一个空缓冲区 |
ctrl-w + gf |
在新的标签页里打开光标下路径指定的文件 |
:tabn |
切换到下一个标签(Control + PageDown) |
:tabp |
切换到上一个标签(Control + PageUp) |
[n]gt |
切换到下一个标签。如果加了n,就切换到第n个标签,第一个是1 |
:tab split |
将当前缓冲区的内容在新页签中打开 |
:tabc[lose] |
关闭当前的标签页 |
:tabo[nly] |
关闭其它的标签页 |
:tabm[ove] [N] |
移动标签页,移动到第N个标签页之后 |
:tabs |
列出所有的标签页和它们包含的窗口 |
文件缓冲区
快捷键 |
功能 |
:buffers |
显示缓冲区列表 |
:ls |
显示缓冲区列表 |
:files |
显示缓冲区列表 |
ctrl + ^ |
在最近两个缓冲区间切换 |
:bn |
下一个缓冲区 |
:bp |
上一个缓冲区 |
:bl |
最后一个缓冲区 |
:b[n] |
切换到第n个缓冲区 |
:[n]b |
切换到第n个缓冲区 |
:[n]bw(ipeout) |
彻底删除第n个缓冲区 |
:[n]bd(elete) |
删除第n个缓冲区,并未真正删除,还在unlisted列表中 |
:ba[ll] |
把所有的缓冲区在当前页中打开,每个缓冲区占一个窗口 |
水平分割
快捷键 |
功能 |
:sp[lit] |
水平分割窗口 |
:sp[lit] FILENAME |
水平分割窗口,并在新窗口中显示另一个文件 |
:[N]sp[lit] |
水平分割出一个n行高的窗口 |
:[N]new |
水平分割出一个n行高的窗口,并编辑一个未命名文件 |
C-W + f |
水平分割出一个窗口,并在新窗口打开名称为光标所在词的文件 |
垂直分割
快捷键 |
功能 |
:vsp[lit] |
垂直分割窗口 |
:vsp[lit] FILENAME |
垂直分割窗口,并在新窗口中显示另一个文件 |
:[N]vsp[lit] |
垂直分割出一个n列宽的窗口 |
:[N]vnew |
垂直分割出一个n列宽的窗口,并编辑一个未命名文件 |
关闭子窗口
快捷键 |
功能 |
:qa[ll] |
关闭所有窗口,退出vim |
:wa[ll] |
保存所有修改过的窗口 |
:on[ly] |
只保留当前窗口,关闭其它窗口(C-W + o) |
:close |
关闭当前窗口(C-W + c),:q :x也能关闭 |
切换和移动窗口
下文中的大写C代表Control键,加号表示组合的意思,不必输入
快捷键 |
功能 |
C-W + C-W |
切换到下一个窗口 |
C-W + w |
切换到下一个窗口 |
C-W + p |
切换到前一个窗口 |
C-W + h(l,j,k) |
切换到左(右,下,上)的窗口 |
C-W + H(L,K,J): |
将当前窗口移动到最左(右、上、下)面 |
C-W + t(b) |
切换到最上(下)面的窗口 |
C-W + r |
旋转窗口的位置 |
C-W + T |
将当前的窗口移动到新的标签页上 |
调整窗口大小
下文中的大写C代表Control键,加号表示组合的意思,不必输入
快捷键 |
功能 |
[n] C-W + + |
当前窗口增高n行 |
[n] C-W + - |
当前窗口减小n行 |
[n] C-W + < |
当前窗口减少n列 |
[n] C-W + > |
当前窗口增宽n列 |
[n] C-W + _ |
当前窗口尽可能高,也可以用n设定行数 |
[n] C-W + | |
当前窗口尽可能宽,也可以用n设定列数 |
C-W + = |
所有窗口同样高度 |
:resize n |
当前窗口设置为n行高 |
:resize +n |
当前窗口增加n行 |
:resize -n |
当前窗口减少n行 |
:vertical resize n |
当前窗口设置为n列宽 |
:vertical resize +n |
当前窗口增加n列 |
:vertical resize -n |
当前窗口减少n列 |
参考
Vim使用笔记
vim中多标签和多窗口的使用