如何更改当前拆分的宽度和高度?


110

我正在处理拆分(使用^ w + v,^ w + s)缓冲区,但是有时我想扩大当前拆分或更改其高度。我该如何实现?

Answers:


157

有几个窗口命令允许您执行以下操作:

  • Ctrl+W +/-:增加/减少高度(例如20<C-w>+
  • Ctrl+W >/<:增加/减少宽度(例如30<C-w><
  • Ctrl+W _:设置高度(例如50<C-w>_
  • Ctrl+W |:设置宽度(例如50<C-w>|
  • Ctrl+W =:均衡所有窗口的宽度和高度

也可以看看: :help CTRL-W


19
可能还需要注意的是,前两个选项一次要多于一个行/列才能调整大小。
Rich

4
可能还需要注意的是,第3个和第4个选项无需花费任何大小即可调整为最大高度/宽度。
迈克尔

2
在我的系统上,不是:help CTRL-W,而是:help CTRL_W
Alexej Magura

在Windows上,Cygwin,vim:当您vimdiff -o bigfile1.bash bigfile2.bash::ctrl-w =在顶部打开一个MiniBufExplorer第3窗口(现在这3个窗口的大小相等),然后关闭该窗口,第一个.bash文件的窗口2会比第二个.bash文件大。窗口。对2个.vim文件进行相同的操作可获得相同的结果。:(与vim -o
-Olivier Dulac

询问前两个选项的快捷方式 vi.stackexchange.com/questions/16786/…–
KcFnMi

43

您还可以使用以下resize命令:

  • :resize [+-]N -调整水平分割的大小,将高度增加或减少N个字符。
  • :vertical resize [+-]N -调整垂直分割的大小,将高度增加或减少N个字符。
  • :resize N -调整水平分割的大小,将高度设置为N个字符。
  • :vertical resize N -调整垂直分割的大小,将宽度设置为N个字符。

这些等效于Ctrlw命令。请参阅:help window-resize



28

这是我喜欢使用vim鼠标模式的几个原因之一。

如果您使用的是GUI版本,或者您的终端支持发送拖动事件(例如xterm或rxvt-unicode),则可以单击分割线并拖动以将窗口的大小精确调整到所需的位置,而无需使用ctrl进行大量猜测-w加,减,减,更大的组合。

在终端版本中,必须正确设置鼠标模式才能起作用

:set mouse=n

(我使用“ n”,但是“ a”也可以)

并且您必须设置tty鼠标类型

:set ttymouse=xterm2

很多人说使用鼠标浪费了很多时间(主要是因为将手从键盘移到鼠标再往回移动需要花费时间),但是在这种情况下,我发现节省了时间在调整窗口大小的同时立即获得反馈,并且重新调整大小的速度(保持移动鼠标而不是键入其他键序列)的效果超过了手的时间延迟。


4
我完全同意,我在Gnome-terminal中发现:set mouse=n足够了,但是可以在:set ttymouse=xterm2需要tmux内部时启用。
the_velour_fog

1
绝对正确,我喜欢键盘,但是用鼠标会更好。
calbertts

哇,谢谢你引起我的注意!
Charlie Gorichanaz

完全同意“,但是我发现,在这种情况下,在调整窗口大小时立即获得反馈所节省的时间以及重新调整大小的速度(保持移动鼠标而不是键入其他键序列)的时间超过了动手的时间。 ”
纳瓦兹

4

似乎没有人提及z{nr}<CR>

如果您选择了:h ^w_,则z{nr}<CR>其下方将显示,效果与相同CTRL-W_

如果您不需要z=拼写检查,并在下面添加到.vimrc

" vertical resize, z0<CR> minimize, z= equalize, z99<CR> maximize.
nnoremap z= <C-w>=

然后更改窗口高度:

  • z0<CR> 最小化当前窗口的高度
  • z99<CR> 最大化当前窗口的高度
  • z= 使他们都平等

1
的这种用法z有点不直观。我认为我们应该坚持C-W映射。很高兴知道那里有什么。
克劳斯

4

调整大小可以更快地进行拆分:http : //vim.wikia.com/wiki/Resize_splits_more_quickly

您可以使用:resize命令或其快捷方式:res来更改窗口的高度。要将高度更改为60行,请使用: :resize 60

您也可以增量更改高度。要以5为增量更改高度,请使用: :res +5 :res -5

您可以使用:vertical resize更改当前窗口的宽度。要将宽度更改为80列,请使用: :vertical resize 80

您也可以增量更改宽度。要以5为增量更改宽度,请使用: :vertical resize +5 :vertical resize -5


Resize splits more quickly除非将这些命令绑定到快捷键上,否则这几乎是不可能的,这是开箱即用的
klaus

不完全同意埃南的说法。我喜欢这个答案,恕我直言
工艺

0

由于某种原因(可能是插件),标准C-w >(等)在my中不起作用~/.vimrc

这些.vimrc添加有效(Ctrl-Shift-Left...其中Left | Right=分别为左和右箭头键。

" noremap <silent> <C-S-Left> :vertical resize +5<CR>
" noremap <silent> <C-S-Right> :vertical resize -5<CR>
noremap <silent> <C-S-Left> :vertical resize +1<CR>
noremap <silent> <C-S-Right> :vertical resize -1<CR>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.