当使用Vim时,我发现当前行缓冲区可以改变屏幕上的位置并找到this tip on the wiki来修复它时很烦人:
" When switching buffers, preserve window view.
if v:version >= 700
au BufLeave * let b:winview = winsaveview()
au BufEnter * if exists('b:winview') | call winrestview(b:winview) | endif
endif
但是这个解决方案导致different display bug被触发。是否有可能通过在winrestview()之后调用其他东西来解决这个其他bug?我尝试了以下列出的每个命令:帮助提到重绘无效,包括feedkeys()。但是,如果我手动按任意键,屏幕会重新绘制并且错误会解决。