2009-08-13 9 views
113

El comando para actualizar un archivo de la versión en el disco es :e!Actualizar todos los archivos en memoria intermedia del disco en vim

¿Cómo puedo hacer el mismo para todos los archivos en la memoria intermedia?

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

Respuesta

83

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

+31

ok genial, así,: bufdo e! lo haré. Pero hay una carga rápida (Y/N) cada vez. ¿Cómo puedo deshacerme de eso? – odwl

+21

Use 'set noconfirm' antes de usar el comando' bufdo' ('set confirm' después en reanable). – pmf

+1

Usaría 'bufdo e' (sin signo de admiración) en lugar de' bufdo e! 'Ya que puede detectar cambios no guardados donde no debería haber ninguno, solo para estar seguro – Watcom

17

Esto es lo que acabó poniendo en mi .vimrc:

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

nmap <leader>gr call PullAndRefresh() 
97

El comando :checkt[ime] está diseñado para este fin.

Te solicitará que vuelvas a cargar cualquier buffers que haya cambiado; si desea omitir el aviso, puede hacer :set autoread de antemano (aún recibirá un mensaje de aviso sobre los búferes con cambios locales no guardados).

También evita el problema de resaltado de sintaxis mencionado por Steven Lu en la respuesta aceptada; :bufdo turns off syntax highlighting by design.

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

4

De :help autoread:

Cuando un archivo se ha detectado que se ha cambiado fuera de Vim y no se ha cambiado en el interior de Vim, lee automáticamente de nuevo. Cuando el archivo ha sido eliminado, esto no está hecho.

Si, como yo, lo que desea es siempre de forma pasiva recarga tampones rancio, pero sin modificar-, entonces esto parece que debería hacer el trabajo.

Sin embargo, el detalle final es cuando vim da cuenta de la memoria intermedia de rancio. Eso se puede forzar con checktime. Si tiene focus events set up, entonces podemos ejecutar checktime cada vez que obtener el foco de este modo:

set autoread 
autocmd FocusGained * checktime 

This answer también tiene algunos detalles interesantes.

Cuestiones relacionadas