关闭vim中的选项卡后,如何进行选项以使左侧的选项卡自动显示?
关闭选项卡时的默认设置似乎显示正确的选项卡,这很烦人,因为当前选项卡右侧的新选项卡已打开。因此,打开一个新选项卡并关闭它会使您处于另一个选项卡上。
答案 0 :(得分:3)
已向add a 'tabcloseleft' option提出补丁;它将被整合到Vim中(在未来的某个时间,一旦Bram有时间处理它)。
答案 1 :(得分:2)
有一个想法:虽然没有TabClose
事件,但有TabEnter
事件可用于实现您想要的事情:如果在其中一个事件中,选项卡的数量少于先前记录的数量数字显然是由于关闭标签而被触发的:
let s:prevtabnum=tabpagenr('$')
augroup TabClosed
autocmd! TabEnter * :if tabpagenr('$')<s:prevtabnum && tabpagenr()>1
\ | tabprevious
\ |endif
\ |let s:prevtabnum=tabpagenr('$')
augroup END
答案 2 :(得分:0)
TabClose
将是你想要的,但它不存在)。
您最接近的可能是拥有自己的命令或映射,并且关闭选项卡将执行正常模式gT
。 (你或许可以在一个函数中找到它,并检测窗口的状态,从而确定你是否希望gT
。这需要更多的思考和调查。)
当然,您也可以使用其他解决方案进行调查;这里有几个:
CTRL-6
)CTRL-]
移动,CTRL-T
返回)答案 3 :(得分:0)
这看起来很有用:
http://vim.wikia.com/wiki/Have_focus_on_left_tab_after_tabclose
我想我会稍微修改它来做到这一点:
function! CloseSomething()
if winnr("$") == 1 && tabpagenr("$") > 1 && tabpagenr() > 1 && tabpagenr() < tabpagenr("$")
q | tabprev
else
q
endif
endfunction
cnoremap q<CR> :call CloseSomething()<CR>
所以现在:q
会做我想要的......
答案 4 :(得分:0)
很好的问题,在这里挣扎了一段时间是我的解决方案。
将以下内容添加到.vimrc
文件中。请注意,我已重新映射命令:q
和:Q
" declare function for moving left when closing a tab.
function! TabCloseLeft(cmd)
if winnr('$') == 1 && tabpagenr('$') > 1 && tabpagenr() > 1 && tabpagenr() < tabpagenr('$')
exec a:cmd | tabprevious
else
exec a:cmd
endif
endfunction
" define :Q command
command Q call TabCloseLeft('q!')
" override default quit command
cabbrev q <c-r>=(getcmdtype()==':' && getcmdpos()==1 ? 'Q' : 'q')<CR>
{p> TabCloseLeft
函数:https://github.com/convissor/vim-settings/blob/master/.vimrc