Answers:
按Control+ w,然后单击一次q关闭每个窗口。
更新:还可以考虑对您更有用的eckes答案,:on
如果您不想一次在一个窗口中进行,则涉及(请参阅下文)。
hidden
似乎有所帮助。不过,我的意思是,您如何添加!捷径?是“ Cw!q”,“ Cw q!”,“!Cw q”,“ C-!w q”吗?我认为这些都不是,但是我已经忘记了如何创建新的缓冲区,因此对于读者而言,这是一个练习。
要关闭所有的分裂,我通常放置在窗口中的游标,应在上 -ly可见一个,然后做:on
这使得当前窗口上 -ly可视窗口。要记住的好记忆法。
编辑: :help :on
向我展示这些命令是相同的:
除活动窗口外,这四个窗口均关闭所有窗口。
:on
将以响应E445: Other window contains changes
并且不会关闭另一个窗口。例如,我通常创建一个新窗口,并将要读取的文件读入其中。在这种情况下,Vim认为另一个窗口具有未写入的更改。在这种情况下,请使用:on!
强制关闭。
我很了解您的意图,我也专门使用缓冲区,并且在需要时偶尔进行拆分。
以下是我的摘录 .vimrc
" disable macro, since not used in 90+% use cases
map q <Nop>
" q, close/hide current window, or quit vim if no other window
nnoremap q :if winnr('$') > 1 \|hide\|else\|silent! exec 'q'\|endif<CR>
" qo, close all other window -- 'o' stands for 'only'
nnoremap qo :only<CR>
set hidden
set timeout
set timeoutlen=200 " let vim wait less for your typing!
这非常适合我的工作流程
如果
q
被按下
- 如果打开多个窗口,则隐藏当前窗口,否则尝试退出vim。
如果
qo
被按下,
- 关闭所有其他窗口,如果只有一个窗口则不起作用。
当然,您可以将该混乱的部分包装到一个函数中,例如
func! Hide_cur_window_or_quit_vim()
if winnr('$') > 1
hide
else
silent! exec 'q'
endif
endfunc
nnoremap q :call Hide_cur_window_or_quit_vim()<CR>
阿里纳斯:我重新映射q
,因为我不使用宏编辑,而不是使用:s
,:g
,:v
,和外部文本处理命令如果需要的话,例如:'{,'}!awk 'some_programm'
,或使用:norm! normal-command-here
。