我使用vim,通常打开多个垂直/水平窗口,通常在编辑cpp头文件和cpp文件的同时。如何暂时使正在处理的窗口全屏显示,编辑所需的内容,然后退出全屏显示?
全屏是指仅适合vim窗口,而不适合整个显示屏。
Answers:
如果我了解您的要求,我认为您会发现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
)有关,但是我从未使用过该映射。
:help cpoptions
)也可能有问题。不过,与其他许多插件配合使用,对我来说效果很好。
<C-w>o
没有插件就可以执行您在评论中描述的操作(我一直使用默认<C-w>o
值,但我没有考虑)。根据您的评论,我怀疑您发表评论时尚未安装插件。自从您接受以后,我假设您已经解决了。有关更多信息,请参见上面我编辑的答案。
<C-w>w
。它也有冲突:D,谢谢。
ctrl-p
插件和的默认行为<C-w>o
来获得OP所需的预期结果(与使用ZoomWin插件相比)。@duskwuff的答案也可以不使用插件而工作。
一个选项可以是在新选项卡中进行编辑。以下命令将活动缓冲区打开到新选项卡,使您可以在Hole Vim窗口中查看缓冲区。
:tab split
完成后关闭标签:
:tabc
编辑:
您始终可以使用以下命令tt
作为快捷方式(或最好将其添加到.vimrc
):
:noremap tt :tab split<CR>
完成后便是:
:wq
:noremap tt :tab split<CR>
为我提供了便利(:wq
完成编辑后,随后进行)
noremap <leader>w :wq<cr>
方便退出
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(默认值:可能的最高值)
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>
我尝试过ZoomWin和其他一些。问题是,它们都破坏了并试图重新创建窗口。对于自定义插件,例如NERDTree,Tagbar和其他一些插件,这尤其成问题。图标和字体绘制不正确,尺寸混乱等。
zoomwintab.vim是一个简单的缩放窗口插件,使用vim的选项卡功能以无损方式放大受ZoomWin插件启发的窗口。
https://github.com/troydm/zoomwintab.vim
我使用Tmux,所以我将其映射为<leader> z
与tmux保持同步<prefix> z
nnoremap <leader>z :ZoomWinTabToggle<CR>
不知怎的,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列左右的内容。无论如何,即使有一点古怪,它对我来说仍然可以接受。
编辑:现在它以某种方式可以正常工作,之前一定已经搞砸了。