Нет встроенной команды для этого, но создать свою собственную не очень сложно.Буферы имеют атрибуты, и вы ищете те, которые считаются активными , для которых флаг hidden
имеет значение false.
Вы можете получить список буферов с помощью getbufinfo()
.Эта функция возвращает массив словарей, содержащих информацию о буфере.Затем необходимо выполнить итерацию по этим записям и, если они не представляют собой скрытый буфер, выполнить запись (или :update
).
Насколько я знаю, нет собственного способа выполнить командув другой буфер без переключения на него.Таким образом, мы вынуждены переключиться на другой буфер для выполнения команды.Это может испортить ваш текущий буфер, но его можно решить, сохранив его перед циклом и восстановив позже.
Следующая функция делает это, и сопровождающая пользовательская команда :Wa
просто вызывает его.
function! WriteActiveBuffers()
" Save current buffer number
let current = bufnr('%')
for buffer in getbufinfo({'buflisted':1})
if !buffer["hidden"]
" Found an active buffer
" Switch to it
execute 'buffer' buffer["bufnr"]
" Write if modified
update
endif
endfor
" Restore current buffer
execute 'buffer' current
endfunction
command! Wa call WriteActiveBuffers()