如何在Vim中增加垂直分割窗口的大小

351

:vsplit(简写::vs)将Vim视口垂直拆分。 :30vs 拆分视口,使新窗口的宽度为30个字符。创建了这个30个字符的窗口后,如何将其大小更改为31或29?

对于水平窗口,Ctrl-W + 可以将行数增加一行。相应的,增加一列的等效命令是什么?


16
您可以使用Ctrl-W 5+(或任何数字)来增加窗口高度5个单位。同样,Ctrl-W 5-也是如此。 - AlexMA
2
输入:h ^w查看窗口命令列表。输入:h ^ww查看普通命令Ctrl-w w的帮助。 - qeatzy
10个回答

499

CTRL-W >

按下这个组合键可以使窗口变宽。

and

CTRL-W <

按下这个组合键可以使窗口变窄。


128
:30winc >翻译为比原来多30个字符宽度,将:30winc <翻译为比原来少30个字符宽度。 - Benoit
95
或者使用“30CTRL-W>”来保持回答的精神。 - Xavier T.
54
使用":vertical resize 30"来将当前窗口大小调整为恰好30个字符宽。 - Peter Rincker
6
使用 ":res <N>" 命令可以将当前窗口的行数设置为 N,其中 N 代表窗口的高度而非宽度。 - lukecampbell
1
太蠢了,太直观了,但我仍然没有想到 '<', '>'。谢谢!还有没有类似于Ctrl-W、=的键可以用于垂直分割? - José Ramón
2
按“CTRL-W =”使它们相等 - Hritik

276

Ctrl-W =

这将使它们相等。


12
:winc = 这也会使它们相等。 - nitin_cherian
2
那是用于水平分割,对吧?那么垂直分割的等效方法是什么? - José Ramón
3
这个命令可以用于水平和垂直分割。 - Nathan

116
If you need to resize the HORIZONTAL SPLIT, the command is the same for all splits, but the parameter changes:
- + instead of < >
Examples:
Decrease horizontal size by 10 columns.
:10winc -

水平尺寸增加30列

:30winc +

或者在正常模式下:

水平分割

10 CTRL+w -

30 CTRL+w +

垂直分割

10 CTRL+w < (减小)

30 CTRL+w > (增大)


4
只有一个小意见:根据:he wincctrl+w [count] {arg}也可以使用。 - TrueY
10winc +/- 在垂直方向上的等效命令是什么?我有 vertical resize 30,但我认为更短的命令更好。 - mochsner

52

我给出另一个小建议:

如果想要将窗口宽度设置为80列,可以使用以下代码:

80 CTRL+W |
为使其达到最大宽度,只需省略前面的数字:
CTRL+W |

7
高度:该参数的对应项是“_”(shift+-),用于调整高度。从视觉上记忆起来其实非常容易,因为 | 字符代表垂直分割线,而 _ 字符则代表水平分割线。例如:15 CTRL+W _ 将当前分割线的高度设置为 15 行。另一个记忆方法是:你需要按 SHIFT 键来获得绝对值大小,因为 | 和 _ 都需要按下 shift 键才能使用。 - freeo

34

我已经将以下内容映射到我的 .gvimrc 文件中,这样我就可以使用 command-[arrow] 来调整当前窗口的高度和宽度:

" resize current buffer by +/- 5 
nnoremap <D-left> :vertical resize -5<cr>
nnoremap <D-down> :resize +5<cr>
nnoremap <D-up> :resize -5<cr>
nnoremap <D-right> :vertical resize +5<cr>

对于MacVim,你需要把它们放在你的 .gvimrc 文件中(而不是你的 .vimrc 文件),否则它们会被系统的 .gvimrc 覆盖。


1
那个结尾的<cr>是什么意思?我以前在nnoremap中没看到过。 - Zen
2
它是“回车符”的缩写,基本上相当于用户按下回车键。 - Ted Naleid
1
这句话的意思是“<D-left>”等于CTRL-D和左箭头吗?” - mropp

14

在同样的思路下,我在我的 .vimrc 文件中使用以下代码,让我可以在各个分屏之间移动,自动将我正在移动到的分屏扩展到全屏,并将其余所有分屏缩小到其最小高度或宽度:

" Switch between window splits using big J or K and expand the split to its 
" full size. 
" 
" Move vertically in the window through the horizontal splits... 
map <C-J> <C-w>j<C-w>_ 
map <C-K> <C-w>k<C-w>_ 

" Move horizontally in the window through the vertical splits... 
map <C-H> <C-w>h<C-w>\| 
map <C-L> <C-w>l<C-w>\| 

8

这是我现在正在使用的:

nnoremap <silent> <Leader>= :exe "resize " . (winheight(0) * 3/2)<CR>
nnoremap <silent> <Leader>- :exe "resize " . (winheight(0) * 2/3)<CR>
nnoremap <silent> <Leader>0 :exe "vertical resize " . (winwidth(0) * 3/2)<CR>
nnoremap <silent> <Leader>9 :exe "vertical resize " . (winwidth(0) * 2/3)<CR>

8

要改变宽度,请使用“垂直调整大小”,要改变高度,请使用“调整大小”。

我在我的 .vimrc 文件中做了以下映射:

  1. ALT 将增加所选分屏的宽度

  2. ALT 将减小所选分屏的宽度

  3. ALT 将增加所选分屏的高度

  4. ALT 将减小所选分屏的高度

我的 .vimrc 代码:

nmap <M-Right> :vertical resize +1<CR>
nmap <M-Left> :vertical resize -1<CR>
nmap <M-Down> :resize +1<CR>
nmap <M-Up> :resize -1<CR>

Vim 更快地调整分割窗口大小


6

我正在使用数字来调整大小,通过在 .vimrc 文件中映射以下内容。

nmap 7 :res +2<CR> " increase pane by 2 
nmap 8 :res -2<CR> " decrease pane by 2
nmap 9 :vertical res +2<CR> " vertical increase pane by 2
nmap 0 :vertical res -2<CR> " vertical decrease pane by 2

我认为你的意思是 nmap 9 :vertical res +2<CR> 而不是 -2 用于 vertical increase - Zach
这是一个非常好的绑定。谢谢! - LeOn - Han Li

3
我正在使用以下命令进行操作:

set lines=50     " For increasing the height to 50 lines (vertical)
set columns=200  " For increasing the width to 200 columns (horizontal)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接