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.

Odwl
fuente

Respuestas:

87

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

pmf
fuente
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

Paul Fenney
fuente
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()
Ivan
fuente
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.

phs
fuente