vim no recuerda la última posición

75

Mi Ubuntu LTS 12.04 tiene el editor vim. Si abro un archivo, muevo a un párrafo y vuelvo a abrir vim, luego el cursor siempre va al principio del archivo.

Este no es el comportamiento esperado. ¿Cómo el vim puede recordar la última posición de lectura después de cerrar un archivo?

Intenté vi también, pero el resultado es el mismo.

    
pregunta Lunar Mushrooms 28.11.2012 - 14:07

6 respuestas

95

Lo resolvió:

/ etc / vim / vimrc

Ya contiene la función necesaria. Solo necesito descomentarlo:

" Uncomment the following to have Vim jump to the last position when
" reopening a file
if has("autocmd")
  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
endif

(De hecho, puedes consultar también /usr/share/vim/vim73/vimrc_example.vim)

    
respondido por el Lunar Mushrooms 03.12.2012 - 10:08
56

Tuve el mismo problema y resultó que el archivo .viminfo en mi directorio personal tenía una propiedad incorrecta. Fue propiedad de root: root.

Una vez que arreglé la propiedad del archivo cambiándolo a mí mismo, recordar la posición del archivo comenzó a funcionar para mí de nuevo

    
respondido por el TikiTavi 26.11.2013 - 16:36
5

Creo que esta publicación wiki puede proporcionar una solución. No creo que restaurar el puesto sea el comportamiento esperado. enlace

    
respondido por el GaryBishop 28.11.2012 - 14:36
1

Hay un complemento llamado vim-lastplace (soy el autor) que abrirá tus archivos donde lo dejaste . Mejora las sugerencias anteriores al ignorar los mensajes de confirmación porque, por lo general, estás editando un nuevo mensaje y quieres comenzar en la parte superior del archivo de mensajes de confirmación.

    
respondido por el Greg Dietsche 17.01.2016 - 04:20
0

En mi caso, vi era un enlace simbólico: /usr/bin/vi -> /etc/alternatives/vi -> /usr/bin/vim.tiny . Este último no tiene características vim reales. Al instalar el paquete 'vim' (usando synaptic o apt-get), este punto de enlace simbólico se convirtió en /usr/bin/vim.basic , y esto solucionó el problema.

    
respondido por el Bruno Haible 11.02.2017 - 21:57
-1

Hay un error en la solución de hongos lunares. Aquí la corrección:

if has("autocmd")
  " When editing a file, always jump to the last known cursor position.
  " Don't do it when the position is invalid or when inside an event handler
  " (happens when dropping a file on gvim).
  " Also don't do it when the mark is in the first line, that is the default
  " position when opening a file.
  autocmd BufReadPost *
    \ if line("'\"") > 1 && line("'\"") <= line("$") |
    \   exe "normal! g'\"" |
    \ endif

endif
    
respondido por el Arnaud 29.09.2015 - 05:01

Lea otras preguntas en las etiquetas