Как запустить команду над несколькими буферами/вкладками для удаления конечных пробелов?

У меня есть команда, чтобы убрать лишние пробелы в моем коде в vim:

" to tidy excess whitespace
map <leader>1 :execute ':%s#\s\+$##g'<CR>

Мой вопрос в том, что если у меня открыто 10 вкладок или буферов, как я могу применить эту команду ко всем из них, а не просто идти к каждому из них и применять эту команду.

Ответ 1

Посмотрите на подсказку vim по использованию bufdo, windo и tabdo.

Предполагая, что все ваши буферы находятся в списке буферов, ваша карта может быть такой же простой, как

" to tidy excess whitespace
map <leader>1 :execute ':bufdo! %s#\s\+$##g'<CR>

Ответ 2

Не проверено, но это должно сделать это:

:tabdo %s/SEARCH/REPLACE/ge | update

Это заменяет SEARCH на всех вкладках с помощью REPLACE и записывает файл, если он изменен командой без показывая сообщение об ошибке, если ничего не найдено.

Если вы хотите, чтобы вас спрашивали перед каждой заменой, добавьте 'c' к флагам.

См. также :help :argdo, :help :windo и :help :bufdo.