如何暂时使正在处理的窗口在vim中变为全屏显示?


73

我使用vim,通常打开多个垂直/水平窗口,通常在编辑cpp头文件和cpp文件的同时。如何暂时使正在处理的窗口全屏显示,编辑所需的内容,然后退出全屏显示?

全屏是指仅适合vim窗口,而不适合整个显示屏。

Answers:


23

如果我了解您的要求,我认为您会发现ZoomWin插件很有帮助(GitHub)。如果您有一堆分割的窗口,并且想暂时将当前窗口变成唯一可见的窗口,则可以单击<C-w>o。当您想恢复到先前的拆分状态时,请<C-w>o再次点击。

[编辑]有关键映射的说明:

该插件的默认键映射为<C-w>o,但与默认的Vim键映射冲突。默认情况下,该操作为:only,这使当前窗口成为唯一窗口。如果您想保留该功能,可以将ZoomWin重新映射到另一个键。我将其重新映射到<C-w>w,因为我也喜欢使用该:only选项。这是我的映射:

nnoremap <silent> <C-w>w :ZoomWin<CR>

请注意,这也将覆盖默认的Vim映射,该映射与移动到其他可见窗口(:help CTRL-W_w)有关,但是我从未使用过该映射。


9
我现在正在使用它,当我按<Cw> o时它可以正常工作,但是当我再次按<Cw> o进行还原时,显示一条消息,显示仅打开了一个窗口,并且它什么也没做
Ted Rod

抱歉,我没有这个问题。可能与您拥有的另一个插件或键映射存​​在冲突。单独尝试。Vim兼容模式设置(:help cpoptions)也可能有问题。不过,与其他许多插件配合使用,对我来说效果很好。
Jim Stewart

1
我只是意识到我实际上是在反弹该键,并且<C-w>o没有插件就可以执行您在评论中描述的操作(我一直使用默认<C-w>o值,但我没有考虑)。根据您的评论,我怀疑您发表评论时尚未安装插件。自从您接受以后,我假设您已经解决了。有关更多信息,请参见上面我编辑的答案。
Jim Stewart

它现在可以与:ZoomWin一起使用,但是我必须找到除以外的其他键<C-w>w。它也有冲突:D,谢谢。
Ted Rod

我将使用该ctrl-p插件和的默认行为<C-w>o来获得OP所需的预期结果(与使用ZoomWin插件相比)。@duskwuff的答案也可以不使用插件而工作。
Perplexabot

133

Ctrl+W_ 将垂直最大化窗口。

Ctrl+W| 将最大化一个水平窗口。

据我所知,在执行这些操作后无法恢复以前的布局,但是Ctrl+W=会将所有窗口的大小调整为相等的大小。


13
谢谢。很好,因为它不需要插件。
2014年

52

一个选项可以是在新选项卡中进行编辑。以下命令将活动缓冲区打开到新选项卡,使您可以在Hole Vim窗口中查看缓冲区。

:tab split

完成后关闭标签:

:tabc

编辑:

您始终可以使用以下命令tt作为快捷方式(或最好将其添加到.vimrc):

:noremap tt :tab split<CR>

完成后便是:

:wq

1
这真的很棒,因为您不需要插件。刚刚测试过,效果很好!添加到我的.vimrc :)
jsdevel 2014年

哇,有什么办法可以使它切换?那太光滑了!

1
@racarate:noremap tt :tab split<CR>为我提供了便利(:wq完成编辑后,随后进行)
凯文(Kevin

@kevin这是一个很棒的捷径!随时编辑答案并将其添加为编辑内容。我认为这可以帮助不一定阅读评论的人!
米克,2015年

noremap <leader>w :wq<cr>方便退出
Pegasus

10

ctrl-w_-最大化当前窗口

希望这可以帮助你。:)

这些是可以使用VIM编辑器实现的一些有用命令

:电子文件名 -编辑另一个文件

:拆分文件名 -分割窗口并加载另一个文件

ctrl-w向上箭头 -将光标移至窗口上

CTRL-W CTRL-W -移动光标到另一个窗口(周期)

ctrl-w = -使所有大小相等

10 ctrl-w + -将窗口大小增加10行

:vsplit文件 -垂直分割

:sview文件 -与split相同,但只读

:隐藏 -关闭当前窗口

:只有 -只保留该窗口打开

:LS -显示当前缓冲区

:B 2 -开放式缓冲#2在这个窗口


:h resize将当前窗口高度设置为N(默认值:可能的最高值)
tonywoode

1

vim-maximizer是一个很棒的用于全屏切换Windows的插件。

安装后,您可以简单地使用<F3>(默认快捷方式)在窗口上切换全屏。

您还可以自定义快捷键,例如,如果要使用<C-w> z(类似于tmux快捷键):

nnoremap <silent><C-w>z :MaximizerToggle<CR>
vnoremap <silent><C-w>z :MaximizerToggle<CR>gv
inoremap <silent><C-w>z <C-o>:MaximizerToggle<CR>

0

我尝试过ZoomWin和其他一些。问题是,它们都破坏了并试图重新创建窗口。对于自定义插件,例如NERDTree,Tagbar和其他一些插件,这尤其成问题。图标和字体绘制不正确,尺寸混乱等。

zoomwintab.vim是一个简单的缩放窗口插件,使用vim的选项卡功能以无损方式放大受ZoomWin插件启发的窗口。

https://github.com/troydm/zoomwintab.vim

我使用Tmux,所以我将其映射为<leader> z与tmux保持同步<prefix> z

nnoremap <leader>z :ZoomWinTabToggle<CR>


0

不知怎的,ZoomWin插件对我根本不起作用,我的经验有点像arithran所说的。我找不到其他插件,所以我这样写:

function! ToggleZoom(zoom)
  if exists("t:restore_zoom") && (a:zoom == v:true || t:restore_zoom.win != winnr())
      exec t:restore_zoom.cmd
      unlet t:restore_zoom
  elseif a:zoom
      let t:restore_zoom = { 'win': winnr(), 'cmd': winrestcmd() }
      exec "normal \<C-W>\|\<C-W>_"
  endif
endfunction

augroup restorezoom
    au WinEnter * silent! :call ToggleZoom(v:false)
augroup END
nnoremap <silent> <Leader>+ :call ToggleZoom(v:true)<CR>

它产生效果。您使用映射的键(在我的情况下为“ Leader”和“ +”)在最大化/先前布局之间切换。如果在同一选项卡中更改为另一个拆分,则最大化将关闭。

如果更改选项卡,则拆分将保持最大化,尽管以某种方式它不会再覆盖完整的全宽,而最小化宽度的窗口将重新获得4列左右的内容。无论如何,即使有一点古怪,它对我来说仍然可以接受。

编辑:现在它以某种方式可以正常工作,之前一定已经搞砸了。

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.