Come posso scrivere tutti i buffer con nome?
Vorrei un comando che salvi ogni buffer che ha un nome di file. :h :walldà questo:
*: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.
Quindi, fondamentalmente, voglio un comando che dica "Scrivi tutti i buffer modificati. I buffer senza un nome di file vengono saltati / ignorati". Non mi interessa cosa succede ai buffer di sola lettura.
C'è un comando esistente che lo fa o dovrei scrivere una funzione per farlo?
Risposte
Sembra un luogo ideale per utilizzare il comando :silent!.
:silentpuò essere inserito prima di altri comandi e il suo effetto è quello di impedire la visualizzazione di messaggi "normali" (cioè non di errore). I messaggi di errore continuano a essere visualizzati e possono causare l'interruzione dell'esecuzione.
:silent!, con l'aggiunta !, fa un ulteriore passo avanti e sopprime anche i messaggi causati da errori e impedisce a tali errori di interrompere l'esecuzione.
Quindi dovresti essere in grado di usare quest'ultimo insieme a :wa!così ...
:silent! wa!
... per ottenere il risultato desiderato:
- Scrivi buffer modificati
- Ignora i buffer senza un nome file (errore eliminato)
- Scrivi buffer di sola lettura (che non hai una preferenza per nessuno dei due modi)