Bagaimana saya bisa menulis semua buffer bernama?

Sep 21 2020

Saya ingin perintah yang menyimpan setiap buffer yang memiliki nama file. :h :wallberikan ini:

                            *:wa* *:wall*
:wa[ll]     Write all changed buffers.  Buffers without a file
            name cause an error message.  Buffers which are
            readonly are not written.

:wa[ll]!    Write all changed buffers, even the ones that are
            readonly.  Buffers without a file name are not
            written and cause an error message.

Jadi pada dasarnya saya menginginkan perintah yang akan mengatakan "Tulis semua buffer yang diubah. Buffer tanpa nama file akan dilewati / diabaikan." Saya tidak peduli apa yang terjadi pada buffer hanya-baca.

Apakah sudah ada perintah yang melakukan ini, atau apakah saya perlu menulis fungsi untuk melakukan ini?

Jawaban

5 BLayer Sep 21 2020 at 16:49

Kedengarannya seperti tempat yang ideal untuk memanfaatkan perintah :silent!.

:silentdapat disisipkan sebelum perintah lain dan efeknya adalah untuk mencegah tampilan pesan "normal" (yaitu non-error). Pesan kesalahan masih ditampilkan dan dapat menyebabkan eksekusi terhenti.

:silent!, dengan menambahkan !, melangkah lebih jauh dan juga menyembunyikan pesan yang disebabkan oleh kesalahan dan mencegah kesalahan tersebut membatalkan eksekusi.

Jadi Anda harus dapat menggunakan yang terakhir bersama dengan :wa!demikian ...

:silent! wa!

... untuk mendapatkan hasil yang Anda inginkan:

  1. Tulis buffer yang diubah
  2. Abaikan buffer tanpa nama file (error disembunyikan)
  3. Menulis buffer hanya-baca (yang tidak Anda sukai)