En vim, ¿cómo puedo abrir un archivo en el mismo número de línea que lo cerré la última vez?

141

Quiero configurar vim para abrir un archivo en el mismo lugar donde lo dejé.


fuente
: "apóstrofe seguido de comillas dobles te redirige a la última línea de cambios
Dhiren Hamal

Respuestas:

195

Desde el /etc/vim/vimrcarchivo de Ubuntu , este ejemplo se comenta:

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

Si esto no funciona, un problema común es no tener la propiedad de su ~/.viminfoarchivo. Si este es el caso, ejecute:

sudo chown user:group ~/.viminfo

donde usuario es tuyo usernamey groupsuele ser lo mismo que tu nombre de usuario.

moinudin
fuente
9
El autocmd sale directamente del vim doc. Ver: ayuda last-position-jump
user55400
19
Si la comilla simple en la penúltima línea se cambia a un retroceso, saltará a la posición real del cursor, no solo al comienzo de esa línea:\| exe "normal! g`\"" | endif
u2622
44
La chownparte solucionó el problema para mí. ¡Felicitaciones!
slowpoison
2
Finalmente, alguien señala que mi .viminfo es propiedad de root por alguna razón. Esto debe estar en las otras 100 documentaciones que leí.
Jack
2
Solo quiero hacer +1 en la chown user ~/.viminfoadición. He estado tratando de resolver esto por una hora y me salvaste el día.
Christopher Reid el
48

Si no le importa la automatización del comercio por simplicidad, simplemente presione la tecla '"(apóstrofe, seguido de comillas dobles) al abrir un archivo, saltará a donde estaba. Esto es esencialmente lo que está haciendo la respuesta de @ marcog.

sykora
fuente
24
  :h views-sessions

Puede colocar esto en su .vimrc :

  au BufWinLeave * mkview
  au BufWinEnter * silent loadview

las vistas se colocarán en $ HOME / .vim / view. Probablemente necesite crear estos directorios.

Oli
fuente
Me gusta esta respuesta porque la otra se refería a un archivo / etc / vim / que no existía en mi Mac.
MarkHu
15

Puede iniciar vim sin especificar un nombre de archivo usando

vim 

Luego presione CTRL + O dos veces para moverse a la última ubicación en cualquier archivo en el que haya trabajado.

MatAff
fuente
Si tiene instalado NERDTree, presionar Co dos veces puede abrir NERDTree en el búfer actual. En mi caso, a veces necesito presionar Co hasta cinco veces, pero finalmente obtengo el efecto descrito por @MatAff.
ashrasmun
Presionar Ctrl-cuna vez es suficiente para mí. Además, presionar Ctrl-cmás me lleva más atrás en la posición del cursor (incluso abrir archivos relevantes sin abrir). Uso Neovim 0.4.2, pero entiendo que también se aplica vim.
T_T
7

Si tiene viminfo habilitado, es tan simple como `0ir a la última posición del archivo editado. Notarás que esto es solo un comando 'ir a marcar';

De hecho, más tarde puede hacer '3 para ir a la tercera ubicación editada anterior (quizás en otro archivo), y luego regresar a la última con `0otra vez

Mira esto

 :marks

para ver lugares recordados. Tenga en cuenta también que viminfo almacena todo tipo de otras cosas (como el contenido de registros, marcas por archivo, comando e historial de búsqueda). La mayoría de las personas tienen esto habilitado por razones obvias

sehe
fuente
`0 no me funciona en la versión vim 7.4.1689 en mac. Pero '0 hace el truco. ¿Es esto un error tipográfico en la respuesta?
alamoot
@alamoot no, no lo es, ver motion.txt vimdoc - Comprobar qué personaje su `clave genera en realidad, o lo hacen:verbose map `
sehe
tienes razón. Según el vimdoc, ¡ambos son correctos!
alamoot
6

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

Greg Dietsche
fuente
todo lo que puede hacer sin complementos es lo mejor. aspirar a .vimrc: cuanto menor es el código de la más ligero y más rápido
nilon
1

A veces se ~/.viminfoconvierte en solo lectura o su usuario no tiene acceso al archivo. Esa también podría ser una razón por la cual vim no almacena la posición del cursor cuando cierra el archivo.

dam0055
fuente