2011-10-25 13 views
16

Cuando salgo de VIM y vuelvo a abrir el mismo archivo, me encuentro al comienzo del archivo. ¿Cómo puedo preservar la última posición del cursor?Conservar la última posición de edición en VIM

+0

posible duplicado de [¿Cómo hace que Vim lo lleve de vuelta a donde estaba la última vez que editó un archivo?] (Http://stackoverflow.com/questions/1682536/how-do-you-make-vim- take -tus-back-where-you-were-when-you-last-edited-a-file) – mloskot

+0

: help viminfo debe decirle lo que necesita –

Respuesta

21

El "fuera de la caja" .vimrc permite esto con la declaración:

source $VIMRUNTIME/vimrc_example.vim 

es posible que sólo necesita restaurar esta declaración en su .vimrc. En cualquier caso, vea vimrc_example.vim y también vea la función line()in the Vim manual para una discusión sobre cómo funciona.

+0

Eso funcionó para mí en mac os x. Completé el archivo, chmod 600, y la vida fue grandiosa. – tggagne

0

Puede probar el comando :mks (hacer sesión). Almacena un archivo de script que, cuando se ejecuta a través de vim, restaura su sesión de edición actual, incluidos todos los archivos abiertos y la posición del cursor.

+0

Crea un archivo Session.vim en el directorio local. Esto no es lo que yo quería. Ahora puedo guardar automáticamente la posición de edición y restaurarla cuando se abre el mismo archivo. Simplemente no sé cómo. –

10

Tomado de http://amix.dk/vim/vimrc.html

" Return to last edit position when opening files (You want this!) 
autocmd BufReadPost * 
    \ if line("'\"") > 0 && line("'\"") <= line("$") | 
    \ exe "normal! g`\"" | 
    \ endif 
+0

¿Puedes explicarnos qué hace la instrucción 'if' aquí? Lo estoy leyendo como "Restaure el cursor únicamente si el cursor está después de la primera línea o antes de la última línea", y no está claro para mí qué diferencia hace eso. Actualmente agregué 'autocmd BufReadPost * normal! g \ '" zv' a mi vimrc y parece funcionar, pero supongo que no entiendo los peligros potenciales de la restauración incondicional de marcas. – robru

+1

Ah, si el archivo se trunca fuera de vim, y la marca de vim está en una línea que ya no existe, vim arroja un error. Se corrigió con 'autocmd BufReadPost * silent! normal! g \' "zv' – robru

4

Hay un plugin (yo soy el autor) llamada vim-lastplace que inteligentemente se vuelve a la última edición que ha realizado.

También tiene una opción de configuración para ignorar ciertos tipos de archivos. Por defecto, ignorará los mensajes de confirmación para git, svn y mercurial. Para estos tipos de archivos, comenzará su cursor en la primera línea. Los fragmentos de código de arriba pasarán al medio de su archivo de mensaje de confirmación (donde lo dejó en su confirmación anterior) aunque probablemente no sea lo que usted desea. vim-lastplace corrige este problema.

5

La última posición de edición se conserva automáticamente por Vim, y está disponible como marca de salto "especial" .. Otras marcas especiales incluyen " (posición desde la que guardó) y ' (posición en la que saltó desde).

Puede saltar a una marca escribiendo '<mark>, por lo '. le llevará hasta el lugar de la última edición, '' le llevará de nuevo a donde estaba, y '" le lleva a la posición que ha guardado el archivo en.

Eso y más sobre las marcas de Vim en Vim.Wikia.

Cuestiones relacionadas