Actualizar todos los archivos en el búfer desde el disco en vim


123

El comando para actualizar un archivo desde la versión en el disco es :e!

¿Cómo puedo hacer lo mismo para todos los archivos en el búfer?

Antecedentes: lo necesito porque estoy usando git con múltiples ramas con un vim abierto que contiene un búfer. Cuando pago una rama, me gustaría tener vim refresh.

Respuestas:


87

Lea la documentación para bufdo, debe hacer lo que quiera.


33
ok genial entonces: bufdo e! lo haré. Pero hay una carga rápida (S / N) cada vez. ¿Cómo puedo deshacerme de él?
odwl

21
Úselo set noconfirmantes de usar el bufdocomando ( set confirmluego para volver a leer).
pmf

22
bufdo ecuriosamente deja todos los búferes sin resaltar sintaxis
Steven Lu

44
@StevenLu Verifique la respuesta de PaulFenney a continuación.
DBedrenko

12
¿Por qué la gente vota esto? No solo no es una respuesta, sino que la dirección que te lleva significa que el resaltado de sintaxis se desactiva después de la recarga.
Dmitry Minkovsky

120

El :checkt[ime]comando está diseñado para este mismo propósito.

Le pedirá que vuelva a cargar cualquier búfer que haya cambiado; si desea omitir la solicitud, puede hacerlo de :set autoreadantemano (aún recibirá una solicitud de buffers con cambios locales no guardados).

También evita el problema de resaltado de sintaxis mencionado por Steven Lu en la respuesta aceptada; :bufdodesactiva el resaltado de sintaxis por diseño .

Encontrado a través de: http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html


19

Esto es lo que terminé poniendo en mi .vimrc:

fun! PullAndRefresh()
  set noconfirm
  !git pull
  bufdo e!
  set confirm
endfun

nmap <leader>gr call PullAndRefresh()

7

De :help autoread:

Cuando se ha detectado que un archivo se ha cambiado fuera de Vim y no se ha cambiado dentro de Vim, vuelva a leerlo automáticamente. Cuando el archivo se ha eliminado, esto no se hace.

Si, como yo, solo quieres siempre pasivamente recargar buffers obsoletos pero no modificados, entonces parece que debería hacer el trabajo.

Sin embargo, el detalle final es cuando vim nota el búfer obsoleto. Eso se puede forzar con checktime. Si tiene configurados eventos de enfoque , entonces podemos ejecutar checktimecada vez que ganemos el foco de la siguiente manera:

set autoread
autocmd FocusGained * checktime

Esta respuesta también tiene algunos detalles interesantes.


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.