在Vim中关闭一个标签页后,如何使左边的标签页自动显示出来?关闭标签页时的默认设置似乎是显示右标签页,这很烦人,因为新标签页在当前标签页的右边打开。所以打开一个新标签页和关闭它会让你处于不同的标签页。
qgelzfjb1#
已建议对add a 'tabcloseleft' option进行修补;它将被集成到Vim中(在将来的某个时候,一旦Bram有时间处理它)。
lztngnrs2#
有一个想法:虽然没有TabClose事件,但有TabEnter事件可用于实现您所需目的:如果在其中一个事件上,选项卡的数量小于先前记录的数量,则显然是由于关闭的选项卡而触发的:
TabClose
TabEnter
let s:prevtabnum=tabpagenr('$') augroup TabClosed autocmd! TabEnter * :if tabpagenr('$')<s:prevtabnum && tabpagenr()>1 \ | tabprevious \ |endif \ |let s:prevtabnum=tabpagenr('$') augroup END
jjhzyzn03#
很棒的问题,纠结了一段时间,这里是我的解决方案。将以下内容添加到.vimrc文件中。
.vimrc
" 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
TabCloseLeft
kxeu7u2r4#
我对此表示怀疑;我看不出有任何方法。甚至没有一个自动命令事件可以让你锁定(例如,TabClose可能是你想要的,但它并不存在)。最接近的方法可能是使用自己的命令或Map,在关闭选项卡的同时执行正常模式gT。(您可能会对函数进行一些花哨的操作,并检测窗口的状态,从而确定是否希望执行gT。这需要更多的思考和研究。)当然,你也可以调查使用另一个解决方案的选项卡;以下是一些例子:
gT
CTRL-6
CTRL-]
CTRL-T
tez616oj5#
这看起来很有用: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会做我想做的事...
:q
5条答案
按热度按时间qgelzfjb1#
已建议对add a 'tabcloseleft' option进行修补;它将被集成到Vim中(在将来的某个时候,一旦Bram有时间处理它)。
lztngnrs2#
有一个想法:虽然没有
TabClose
事件,但有TabEnter
事件可用于实现您所需目的:如果在其中一个事件上,选项卡的数量小于先前记录的数量,则显然是由于关闭的选项卡而触发的:jjhzyzn03#
很棒的问题,纠结了一段时间,这里是我的解决方案。
将以下内容添加到
.vimrc
文件中。TabCloseLeft
函数的学分:https://github.com/convissor/vim-settings/blob/master/.vimrckxeu7u2r4#
我对此表示怀疑;我看不出有任何方法。甚至没有一个自动命令事件可以让你锁定(例如,
TabClose
可能是你想要的,但它并不存在)。最接近的方法可能是使用自己的命令或Map,在关闭选项卡的同时执行正常模式
gT
。(您可能会对函数进行一些花哨的操作,并检测窗口的状态,从而确定是否希望执行gT
。这需要更多的思考和研究。)当然,你也可以调查使用另一个解决方案的选项卡;以下是一些例子:
CTRL-6
)CTRL-]
用于移动,CTRL-T
用于返回)tez616oj5#
这看起来很有用:
http://vim.wikia.com/wiki/Have_focus_on_left_tab_after_tabclose
我想我会稍微修改一下:
所以现在
:q
会做我想做的事...