Tak naprawdę zastanawiałem się nad tym samym wyjątkiem paska kart - jak zapobiec temu denerwującym zmianom, gdy pasek kart jest pokazywany lub ukrywany. Czy rozważałeś funkcję opakowania? Poniższa wydaje się działać na przykład ps (będzie nadal powodują przesunięcie jeśli okno podglądu będzie przesłaniać kursor)
se splitbelow splitright
fun! PsWrapper(text)
let view=winsaveview()
exe 'ps' a:text
call winrestview(view)
endfun
Chociaż jesteśmy tu ... sprawa pasek kart wydaje się wymagać pewnej czarnej magii . Tj, jak ktoś zauważył, tabbar spowoduje przewijanie tekstu, jeśli kursor znajduje się powyżej środkowej linii (??). Ale to wydaje się działać - zawsze pokazać pasek kart:
let [view,g:stal]=[winsaveview(),&stal]
let [view.topline,&stal]=[view.topline+!g:stal,2]
call winrestview(view)
i przywrócić pierwotne umieszczenie zakładek ustawień
let [view.topline,&stal]=[view.topline-!g:stal,g:stal]
call winrestview(view)
mam wymienione, jak również, mówię o ruchu, który występuje, gdy jeden robi: ': ps/coś /', następnie ': pclose'. –
Masz rację. Ten ruch pojawia się tylko wtedy, gdy kursor znajduje się poniżej środka okna. Może coś w stylu 'nnoremap ps zt: ps'? –
romainl
Chcę zapobiec ruchowi za każdym razem, gdy otworzy się okno, właściwie nigdy nie używam ': ps', był to tylko przykład pokazujący problem. –