6

在 vim 中关闭选项卡后,如何使左侧的选项卡自动显示?

关闭选项卡时的默认设置似乎显示右侧选项卡,这很烦人,因为新选项卡在当前选项卡右侧打开。因此,打开一个新选项卡并关闭它会使您进入另一个选项卡。

4

5 回答 5

3

已提出补丁以添加“tabcloseleft”选项;它在待办事项列表中,将被集成到 Vim 中(将来某个时候,一旦 Bram 有时间处理它)。

于 2012-12-29T11:33:41.457 回答
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
于 2012-12-29T18:17:38.440 回答
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会做我想做的...

于 2012-12-29T20:37:43.747 回答
0

我对此表示怀疑; 我看不到任何方法。甚至没有您可以锁定的自动命令事件(例如TabClose,这将是您想要的,但它不存在)。

您将获得的最接近的可能是拥有自己的命令或映射,它们将在关闭选项卡的同时执行 normal mode gT。(您可能会喜欢一个功能并检测窗口的状态,从而判断您是否愿意gT。这需要更多的思考和调查。)

当然,您也可以使用其他选项卡解决方案进行调查;这里有一些:

  • 使用拆分窗口
  • 使用备用文件(请参阅CTRL-6
  • 使用标签堆栈在文件之间移动(CTRL-]移动,CTRL-T返回)
于 2012-12-29T07:13:24.810 回答
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>

功劳TabCloseLefthttps ://github.com/convissor/vim-settings/blob/master/.vimrc

于 2018-02-09T12:06:45.923 回答