In realtà mi stavo chiedendo la stessa cosa tranne che con la barra delle schede: come impedire che lo spostamento fastidioso si verifichi quando la barra delle schede viene visualizzata o nascosta. Hai considerato una funzione wrapper? Quanto segue sembra funzionare per l'esempio ps (sarà ancora causare uno spostamento se la finestra di anteprima potrebbe oscurare il cursore)
se splitbelow splitright
fun! PsWrapper(text)
let view=winsaveview()
exe 'ps' a:text
call winrestview(view)
endfun
Mentre noi siamo qui ... il caso scheda bar sembra richiedere qualche magia nera . Cioè, come qualcuno ha sottolineato, la tabbar farà scorrere il testo verso il basso se il cursore si trova sopra la linea centrale (??). Ma questo sembra funzionare - per mostrare sempre una barra delle schede:
let [view,g:stal]=[winsaveview(),&stal]
let [view.topline,&stal]=[view.topline+!g:stal,2]
call winrestview(view)
e di ripristinare la barra delle linguette originale impostazione
let [view.topline,&stal]=[view.topline-!g:stal,g:stal]
call winrestview(view)
Ho quelli fissati così, sto parlando del movimento che si verifica quando uno: ': ps/qualcosa /', poi ': pclose'. –
Hai ragione. Questo movimento si verifica solo quando il cursore è al di sotto del centro della finestra, però. Forse qualcosa come 'nnoremap ps zt: ps'? –
romainl
Voglio impedire il movimento ogni volta che si apre la finestra, in realtà non uso mai ': ps', era solo un esempio che mostrava il problema. –