tutorial mac for commands comandos vim

mac - Vim mantener la posición de la ventana al cambiar de búfer



vim linux (2)

Es interesante notar que no me molestó hasta que leí tu pregunta, jajaja.

Prueba esto:

if v:version >= 700 au BufLeave * let b:winview = winsaveview() au BufEnter * if(exists(''b:winview'')) | call winrestview(b:winview) | endif endif

Un problema que he tenido con Vim en general es que cuando cambio los búferes en una ventana (ya sea :[n]b MiniBufExpl) la posición del cursor permanece igual, pero la ventana siempre se posiciona por lo que la fila en la que se encuentra el cursor en el medio.

Esto es realmente molesto para mí, ya que recuerdo visualmente dónde están las partes superior / inferior de la ventana, no dónde estarían si el cursor se colocara en el centro de la ventana.

¿Hay alguna configuración que pueda cambiar para conservar la posición de una ventana en un búfer?


La secuencia de comandos publicada por @dnets siempre coloca el cursor en la parte superior de la pantalla, aunque en la misma posición en el archivo.

Lo cambié a esto (copiado de http://vim.wikia.com/wiki/Avoid_scrolling_when_switch_buffers )

" Save current view settings on a per-window, per-buffer basis. function! AutoSaveWinView() if !exists("w:SavedBufView") let w:SavedBufView = {} endif let w:SavedBufView[bufnr("%")] = winsaveview() endfunction " Restore current view settings. function! AutoRestoreWinView() let buf = bufnr("%") if exists("w:SavedBufView") && has_key(w:SavedBufView, buf) let v = winsaveview() let atStartOfFile = v.lnum == 1 && v.col == 0 if atStartOfFile && !&diff call winrestview(w:SavedBufView[buf]) endif unlet w:SavedBufView[buf] endif endfunction " When switching buffers, preserve window view. if v:version >= 700 autocmd BufLeave * call AutoSaveWinView() autocmd BufEnter * call AutoRestoreWinView() endif

Y ahora funciona como quiero, la pantalla y la posición del cursor guardadas.