Segarkan semua file dalam buffer dari disk di vim

124

Perintah untuk menyegarkan file dari versi di disk adalah :e!

Bagaimana saya bisa melakukan hal yang sama untuk semua file di buffer?

Latar belakang: Saya membutuhkannya karena saya menggunakan git dengan banyak cabang dengan satu vim terbuka yang berisi buffer. Saat saya melakukan pembayaran di cabang, saya ingin mendapatkan penyegaran vim.

odwl
sumber

Jawaban:

87

Baca dokumentasi untuk bufdo, itu harus melakukan apa yang Anda inginkan.

pmf
sumber
33
ok bagus jadi,: bufdo e! akan melakukan itu. Tapi ada prompt Load (Y / N) setiap saat. Bagaimana saya bisa menyingkirkannya?
odwl
21
Gunakan set noconfirmsebelum menggunakan bufdoperintah ( set confirmsetelah itu dapat digunakan kembali).
pmf
22
bufdo eanehnya meninggalkan semua buffer tidak disorot sintaks
Steven Lu
4
@StevenLu Periksa jawaban PaulFenney di bawah ini.
DBedrenko
12
Mengapa orang-orang memilih ini? Ini bukan hanya bukan jawaban, tetapi arah yang Anda tuju berarti penyorotan sintaks Anda dinonaktifkan setelah memuat ulang.
Dmitry Minkovsky
120

The :checkt[ime]perintah dirancang untuk tujuan ini.

Ini akan meminta Anda untuk memuat ulang semua buffer yang telah berubah; jika Anda ingin melewatkan prompt, Anda dapat melakukannya :set autoreadsebelumnya (Anda masih akan mendapatkan prompt tentang buffer dengan perubahan lokal yang belum disimpan).

Ini juga menghindari masalah penyorotan sintaks yang disebutkan oleh Steven Lu pada jawaban yang diterima; :bufdomematikan penyorotan sintaks menurut desain .

Ditemukan melalui: http://vim.1045645.n5.nabble.com/Bug-report-bufdo-e-breaking-syntax-highlighting-on-displayed-buffers-tp1209995p1209998.html

Paul Fenney
sumber
19

Inilah yang akhirnya saya masukkan ke .vimrc saya:

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

nmap <leader>gr call PullAndRefresh()
Ivan
sumber
7

Dari :help autoread:

Ketika sebuah file terdeteksi telah diubah di luar Vim dan belum diubah di dalam Vim, otomatis membacanya lagi. Ketika file telah dihapus, ini tidak dilakukan.

Jika, seperti saya, Anda hanya ingin selalu memuat ulang buffer yang sudah basi-tapi-tidak diubah secara pasif , maka sepertinya ini harus menyelesaikan pekerjaan.

Namun detail terakhirnya adalah ketika vim memperhatikan buffer yang sudah lama. Itu bisa dipaksakan checktime. Jika Anda telah menyiapkan acara fokus , maka kami dapat menjalankannya checktimekapan pun kami mendapatkan fokus seperti:

set autoread
autocmd FocusGained * checktime

Jawaban ini juga memiliki beberapa detail menarik.

phs
sumber