在关闭vim中的标签后,我该如何使左边的标签是自动显示的标签?vim在关闭标签后自动显示左边的标签
关闭选项卡时的默认设置似乎显示了正确的选项卡,这很麻烦,因为当前选项卡右侧的新选项卡打开。因此,打开一个新选项卡并关闭它会将您留在不同的选项卡上。
在关闭vim中的标签后,我该如何使左边的标签是自动显示的标签?vim在关闭标签后自动显示左边的标签
关闭选项卡时的默认设置似乎显示了正确的选项卡,这很麻烦,因为当前选项卡右侧的新选项卡打开。因此,打开一个新选项卡并关闭它会将您留在不同的选项卡上。
我怀疑它;我无法看到任何方式。甚至没有可以锁定的自动命令事件(例如将会是你想要的,但它不存在)。
最接近你会得到的可能是你自己的命令或映射,以及关闭标签,执行正常模式gT
。 (你可能会喜欢一个功能,并检测窗口的状态,因此是否希望gT
或需要更多的思考和调查。)
你当然也可以调查使用另一个解决方案标签;这里有几个:
CTRL-6
)CTRL-]
移动,CTRL-T
找回)补丁已提出add a 'tabcloseleft' option;它被列入待办事项列表(Vim)(将来有一段时间,一旦Bram有时间来处理它)。
有一个想法:虽然没有事件,但有TabEnter
事件可以用来实现你想要的事件:如果在其中一个事件中选项卡的数量少于之前记录的数量,那么显然它被触发到期要关闭的标签页:
let s:prevtabnum=tabpagenr('$')
augroup TabClosed
autocmd! TabEnter * :if tabpagenr('$')<s:prevtabnum && tabpagenr()>1
\ | tabprevious
\ |endif
\ |let s:prevtabnum=tabpagenr('$')
augroup END
@CiroSantilli你应该在这里阅读所有答案。这个链接已经在一年前由OP发布在他自己的回答中。 – ZyX
这看起来有用:
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
会做我想做的......
我喜欢这个函数和映射的概念,但它有缺点。提出一些也可以处理'quit','q!','wq'的代码会很好。即使更甜更会处理'x','ZZ'等。我尝试了很多变化,无法找到工作。 –
大问题,挣扎了一段时间,这里是我的解决方案。
将以下内容添加到您的.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
没错这就是我的补丁,添加在几个月前。希望它能很快进入主线。 – willurd