Vim基础篇(二)——窗口操作
Vim基础篇(二)——窗口操作
前言:
为了更高效的浏览内容,Vim的一大优势是方便快捷的支持多窗口操作。Vim的多窗口是动态的,可以在打开时就创建多窗口,也可以在编辑过程中新建或关闭窗口。
1 运行时创建多窗口
通过在命令行中输入指令启动Vim并打开文件,当同时打开多文件时我们可以指定窗口的划分方式。
启动Vim并打开文件file,可以同时指定多个文件,将按指定顺序从上到下打开。将窗口水平分割为N份。如果N大于指定的文件数,多余的窗口也会被打开,但会闲置。如果N小于指定的文件数,那么超出的文件不会在窗口中打开,但会在缓存中打开。N省略时效果等同于N等于文件数。例如:’vim -o5 file1.txt file2.txt’。如果文件不存在则新建。
1 | vim -o{N} {file} |
启动Vim并打开文件file,可以同时指定多个文件,将按指定顺序从左到右打开。将窗口垂直分割为N份。如果N大于指定的文件数,多余的窗口也会被打开,但会闲置。如果N小于指定的文件数,那么超出的文件不会在窗口中打开,但会在缓存中打开。N省略时效果等同于N等于文件数。例如:’vim -O5 file1.txt file2.txt’。如果文件不存在则新建。
1 | vim -O{N} {file} |
2 运行时创建多窗口
2.1 普通模式(Normal mode)
- ‘CTRL-W [N]s’或’CTRL-W [N]S’将当前窗口水平分割,新窗口占N行,旧窗口下,新窗口在上。新窗口打开当前文件
- ‘CTRL-W [N]v’或’CTRL-W [N]V’将当前窗口垂直分割,新窗口占N列,旧窗口右,新窗口在左。新窗口打开当前文件
2.2 命令模式(Command line mode)
通过在命令行执行指令可对窗口进行分割从而实现新建窗口。
将当前窗口水平分割为两个窗口,旧窗口在下,新的窗口在上。如果指定了file,那么会在新窗口中打开它,未指定则新窗口也打开旧窗口文件。如果文件不存在则新建。
1 | :sp[lit] {file} |
将当前窗口垂直分割为两个窗口,旧窗口在右,新的窗口在左。如果指定了file,那么会在新窗口中打开它,未指定则新窗口也打开旧窗口文件。如果文件不存在则新建。
1 | :vs[plit] {file} |
类似split
将当前窗口水平分割并打开文件,旧窗口在下,新的窗口在上。不同之处在于如果文件不存在则不会新建窗口。
1 | :sf[ind] {file} |
类似vsplit
将当前窗口水平分割并打开文件,旧窗口在右,新的窗口在左。不同之处在于如果文件不存在则不会新建窗口。
1 | :vert[ical] sf[ind] {file} |
有时候我们打开想以只读方式打开一个窗口浏览某个文件。
类似split
将当前窗口水平分割打开文件,旧窗口在下,新的窗口在上。不同之处在于是以只读方式打开。如果当前已经有窗口以读写方式打开了指定的文件,那么’sview’也将以读写方式将其打开。如果文件不存在则新建并且是只读模式。
1 | :sv[iew] {file} |
以垂直方式分割窗口并且以只读方式打开文件,旧窗口在右,新的窗口在左。如果文件不存在则新建并且是只读模式。
1 | :vert[ical] sv[iew] {file} |
3 窗口布局变化
3.1 普通模式(Normal mode)
- ‘CTRL-w r’或’CTRL-W r’循环移动窗口。当前窗口所在行的所有窗口往右移动一次,最右边窗口移动到左边第一个窗口。当前光标所在行只有一个窗口时,该指令将在列向上生效。当前窗口所在列的所有窗口往下移动一次,最下边的窗口移动到上边第一个窗口。
- ‘CTRL-w [N]x’或’CTRL-W [N]x’当前窗口和第N个窗口交换,N缺省为下一个窗口。当前窗口所在行有其他窗口时,从左到右窗口编号从1递增。当前窗口所在行没有其他窗口时,从上到下窗口编号从1递增。N设置为相应的编号即可与对应窗口交换。
- ‘CTRL-w q’或’CTRL-W q’退出当前窗口。
- ‘CTRL-w c’或’CTRL-W c’关闭当前窗口。
- ‘CTRL-w o’或’CTRL-W o’关闭除了当前窗口以外的其他窗口。
- ‘CTRL-w =’或’CTRL-W =’将所有窗口大小调置相同(均等划分)。
- ‘CTRL-w [N]|’或’CTRL-W [N]|’将窗口设置为N列,N缺省时将窗口宽度调至最大。
- ‘CTRL-w [N]‘或’CTRL-W [N]‘将窗口设置为N列,N缺省时将窗口高度调至最大。
- ‘CTRL-w [N]>’或’CTRL-W [N]>’窗口宽度增加N列,N缺省为1。
- ‘CTRL-w [N]<’或’CTRL-W [N]<’窗口宽度减少N列,N缺省为1。
- ‘CTRL-w [N]+’或’CTRL-W [N]+’窗口高度增加N行,N缺省为1。
- ‘CTRL-w [N]-‘或’CTRL-W [N]-‘窗口高度减少N行,N缺省为1。
- ‘CTRL-w K’或’CTRL-W K’将当前窗口移动至最上端。
- ‘CTRL-w J’或’CTRL-W J’将当前窗口移动至最下端。
- ‘CTRL-w H’或’CTRL-W H’将当前窗口移动至最左端。
- ‘CTRL-w L’或’CTRL-W L’将当前窗口移动至最右端。
- ‘CTRL-w s’、’CTRL-W s’、’CTRL-w S’、’CTRL-W S’将当前窗口水平分割为两个窗口,旧窗口在下,新的窗口在上。新窗口也打开当前窗口的文件。
- ‘CTRL-w v’、’CTRL-W v’、’CTRL-w V’、’CTRL-W V’将当前窗口垂直分割为两个窗口,旧窗口在左,新的窗口在右。新窗口也打开当前窗口的文件。
3.2 命令模式(Command line mode)
设置当前窗口的高度为N行,N缺省时将窗口高度调至最大。
1 | :res[ize] {N} |
使得当前窗口的高度减少N行,N缺省值为0。
1 | :res[ize] -{N} |
使得当前窗口的高度增加N行,N缺省值为0。
1 | :res[ize] +{N} |
设置当前窗口的宽度为N列,N缺省时将窗口宽度调至最大。
1 | :vert[ical] res[ize] {N} |
设置当前窗口的宽度减少N列,N缺省值为0。
1 | :vert[ical] res[ize] -{N} |
设置当前窗口的宽度增加N列,N缺省值为0。
1 | :vert[ical] res[ize] +{N} |
关闭光标所在窗口。
1 | :q[uit] |
关闭所有窗口。
1 | :qall |
只保留光标所在窗口,将其他窗口全部关闭。
1 | :only |
关闭光标所在窗口。
1 | :close |