Historial de archivos recientes en Vim?

132

Me gustaría acceder a los archivos recientes que abrí y luego cerré en GVim. Abro y cierro GVim con frecuencia. También me gustaría acceder a archivos recientes de sesiones anteriores.

¿GVim almacena archivos recientes en algún lugar como Word y muchas otras aplicaciones de escritorio? ¿Cómo acceder a ellos?

Mert Nuhoglu
fuente
Similar a la pregunta: stackoverflow.com/questions/309723/…
malgca

Respuestas:

229

Al menos terminal vim almacena los diez archivos anteriores ~/.viminfoen la sección de marcas de archivo. Se puede utilizar '0, '1, '2, ... '9para saltar entre ellos.

(Probablemente solo sea útil para '0volver al último archivo que estaba editando, a menos que su memoria sea más fuerte que la mía).

También puede usar el :browse oldfilescomando para obtener un menú con números.

sarnold
fuente
2
Si desea utilizar 0, 9como marcas para la navegación, no las marque manualmente
yuan
16
use :browse oldget file-list. e ingrese qpara elegir qué archivo editar.
songhir
55
:e #<1abre el último archivo, ver :h c_#<.
Hotschke
: bro ol funciona ... pero tienes que escribir muchas teclas ... primero para obtener una lista de archivos, luego presionar q, y luego seleccionar un número. Creo que el complemento MRU mencionado a continuación es mucho mejor: stackoverflow.com/a/3171323/4752883 , debe presionar <leader> f, luego buscar el archivo con hjkl u otras teclas / buscar el nombre del archivo. Luego presione o, enter, t o v para abrir rápidamente el archivo debajo del cursor.
alpha_989
Recuperé un archivo que borré por error rmutilizando el método mencionado anteriormente.
tándem
55

La mejor manera que uso es

:browse oldfiles

La forma más fácil en vim.

andor kesselman
fuente
1
¡Agradable! Mapeé esa expresión como "nmap bo: explore archivos antiguos <CR>" (sin las comillas) en mi ~ / .vimrc. Simplemente escribiendo esa asignación (bo) en modo Normal ejecuta ese comando
Victoria Stuart
22

Respuesta muy tardía aquí ... explicando la respuesta de @sarnolds: puede ver el historial de archivos con el comando oldfiles @see: h oldfiles o: h viminfo

:oldfiles 

Además, puede tener una gestión de archivos detallada con vistas y sesiones ... @see: h mkview y: h mksession para detalles ...

Eddie B
fuente
44
Es útil saber cómo abrir realmente un archivo después de saber que es el número de la lista de :oldfiles. Uno puede hacer esto interactivamente usando el :browsecomando, como lo explicó @sarnold, pero también es posible hacerlo manualmente usando :e #<Ndonde N es un número de la oldfileslista.
Krzysztof Adamski
11

Hay un cuchillo suizo de plugin CtrlP de cambio de archivos , que también es parte de janus distributive. Tiene :CtrlPMRUcomando con búsqueda inteligente entre archivos usados ​​recientemente.

Nota: CtrlP mantiene su propia lista de los archivos usados ​​más recientes en g:ctrlp_cache_dir."mru/cache.txt". No está reutilizando viminfo ( set viminfo?) que contiene una lista de marcas de archivo. Esto es útil si desea borrar esta lista.

Alexey
fuente
1
La interfaz CtrlP no es intuitiva para los usuarios de vim? No vale la pena aprender la complicada interfaz para hacer cosas simples como encontrar el archivo MRU = ~ / regexp / (hecho fácilmente con perl / grep regexp ~ / _viminfo).
mosh
Sí. He estado tratando de entender cómo usar Ctrlp, pero MRU parece ser mucho más fácil de usar, si tienes un conjunto simple de archivos ( stackoverflow.com/a/3171323/4752883 ). En MRU también se puede hacer VIM expresión regular buscar para encontrar el archivo que necesita ...
alpha_989
9

Use y :bro olluego presione el número que corresponde al archivo que desea abrir.

nenchev
fuente
5

El complemento CtrlP le permite buscar a través de sus archivos utilizados recientemente, así como los archivos en el directorio actual con este comando:

nnoremap <c-p> :CtrlPMixed<cr>

Esto le ahorra la molestia de tener que lidiar con los comandos integrados de Vim y el complemento MRU, ninguno de los cuales le permite realizar búsquedas difusas de archivos, lo cual es crítico cuando se trabaja en proyectos más grandes.

Andy Ray
fuente
Para aquellos que se resisten a volver a mapear la función predeterminada de Ctrl-P: podría abrir Ctrl-P normalmente y usar Ctrl-F o Ctrl-B para cambiar entre modos (MRU es uno de ellos)
Gustavo Matias
2

Como se ve en los comentarios aquí (http://stackoverflow.com/questions/571955/undo-close-tab-in-vim), su archivo probablemente todavía esté abierto en un búfer:

:ls " get the buffer number
:tabnew +Nbuf " where N is the buffer number

Por ejemplo, puede volver a abrir el tercer búfer en una nueva pestaña (use: e en su lugar si no usa pestañas):

:tabnew +3buf
usuario886333
fuente
1
Si, esto funciona. ¿Pero seguramente el trabajo de un editor es facilitar las cosas? Si tiene que emitir un comando, identifique visualmente algo, recuerde un Id, luego emita otro comando que sea una verdadera pérdida de tiempo del usuario. Su respuesta es correcta, y no me refiero a ofensa, ¡pero no es una de las características asesinas de Vim!
artfulrobot
Yo tuve el mismo problema. ¿Has probado buffexplorer? Combina ls y: tabnew + Nbuf. Ahora puede abrir la lista de buffers, y abrirla en una nueva pestaña, etc. con una pulsación de tecla (o, t, v), etc.
alpha_989
2

Es posible que pueda acceder a la lista desde la línea de comandos con:

grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'"$HOME"','

Explicación:

grep '^>' ~/.viminfo  #find the list of recent files
cut -c3-              #remove the first 2 characters
sed 's,~,'"$HOME"','  #replace ~ with absolute path

Podrías tener un alias bash si lo usas regularmente

alias vim_mru="grep '^>' ~/.viminfo|cut -c3-|sed 's,~,'\"$HOME\"','"
Alexx Roche
fuente
2

Agregar mis 2 centavos aquí porque fzf no se mencionó anteriormente, lo cual es una herramienta maravillosa:
fzf.vim tiene un :Historycomando que le permite buscar los archivos usados ​​más recientes de forma difusa y buscar mientras escribe .
Personalizo el comportamiento (predeterminado) de este comando al no permitir que fzf reordene la lista de resultados de búsqueda a la mejor coincidencia: quiero que el orden de todos los nombres de archivos coincidentes siga siendo el orden en que se usaron estos archivos por última vez.
Para lograr esta personalización, agregué lo siguiente en mi .vimrc para anular el Historycomando predeterminado definido por el complemento fzf.vim:

    command! -bang -nargs=* History
      \ call fzf#vim#history({'options': '--no-sort'})
Emile Vrijdags
fuente
1

Un complemento más que le permite elegir el archivo de la lista de los últimos modificados es staritfy . Reemplaza su pantalla de inicio con una lista de los archivos modificados más recientemente. Siempre puede abrir esta página más tarde con el :Startifycomando.

Krzysztof Adamski
fuente
1
Ni siquiera se pudo iniciar Startify para instalar: necesita más documentos sobre instalación básica y uso. Usando MRU, porque era fácil de instalar y usar.
mosh
1

:ls para enumerar archivos recientes con número de búfer en la columna de la izquierda.

Luego haz :b{buffer-number}para saltar allí.

Ejemplo: :lsmuestra la lista de archivos. Quiero saltar al penúltimo archivo que visité. :b3me llevará allí

Para una búsqueda más rápida, asigne :lsalgo, por ejemplo, <Leader>.en su archivo .vimrc.

Bryan Perez
fuente
1

También puedes volver con ctrl+ O.

IvanDi
fuente