在 vim 中关闭选项卡后,如何使左侧的选项卡自动显示?
关闭选项卡时的默认设置似乎显示右侧选项卡,这很烦人,因为新选项卡在当前选项卡右侧打开。因此,打开一个新选项卡并关闭它会使您进入另一个选项卡。
在 vim 中关闭选项卡后,如何使左侧的选项卡自动显示?
关闭选项卡时的默认设置似乎显示右侧选项卡,这很烦人,因为新选项卡在当前选项卡右侧打开。因此,打开一个新选项卡并关闭它会使您进入另一个选项卡。
已提出补丁以添加“tabcloseleft”选项;它在待办事项列表中,将被集成到 Vim 中(将来某个时候,一旦 Bram 有时间处理它)。
有一个想法:虽然没有TabClose
事件,但有TabEnter
事件可用于实现您想要的:如果在其中一个事件上的选项卡数量少于先前记录的数量,那么显然它是由于关闭选项卡而触发的:
let s:prevtabnum=tabpagenr('$')
augroup TabClosed
autocmd! TabEnter * :if tabpagenr('$')<s:prevtabnum && tabpagenr()>1
\ | tabprevious
\ |endif
\ |let s:prevtabnum=tabpagenr('$')
augroup END
这看起来很有用:
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
会做我想做的...
我对此表示怀疑; 我看不到任何方法。甚至没有您可以锁定的自动命令事件(例如TabClose
,这将是您想要的,但它不存在)。
您将获得的最接近的可能是拥有自己的命令或映射,它们将在关闭选项卡的同时执行 normal mode gT
。(您可能会喜欢一个功能并检测窗口的状态,从而判断您是否愿意gT
。这需要更多的思考和调查。)
当然,您也可以使用其他选项卡解决方案进行调查;这里有一些:
CTRL-6
)CTRL-]
移动,CTRL-T
返回)很好的问题,挣扎了一段时间这是我的解决方案。
将以下内容添加到您的.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>
功劳TabCloseLeft
:https ://github.com/convissor/vim-settings/blob/master/.vimrc