Я бы ответил keflavich, но пока не могу ...
Я работал над аналогичной проблемой, когда хотел имитировать поведение gvim --remote-tab-silent при открытиифайлы внутри gvim.Я нашел этот сценарий WhichTab, но столкнулся с проблемами, когда в любой вкладке открыто более одного окна.Если вы разделите окна внутри вкладок, то у вас будет более одного буфера, возвращаемого tabpagebuflist (), поэтому ваш метод использования позиции номера буфера в списке не работает.Вот мое решение, которое учитывает такую возможность.
" Note: returns a list of tabnos where the buf is found or 0 for none.
" tabnos start at 1, so 0 is always invalid
function! WhichTabNo(bufNo)
let tabNos = []
for tabNo in range(1, tabpagenr("$"))
for bufInTab in tabpagebuflist(tabNo)
if (bufInTab == a:bufNo)
call add(tabNos, tabNo)
endif
endfor
endfor
let numBufsFound = len(tabNos)
return (numBufsFound == 0) ? 0 : tabNos
endfunction
Я думаю, что я могу просто вернуть tabNos, который будет пустым списком, который будет оцениваться как скаляр 0, но я только что выучил vimscript и мне не очень удобноподробностей его динамического поведения при печати пока нет, поэтому я пока оставлю это так.