Используйте vim-way:
$ ex +'bufdo retab' -cxa **/*.*
globstar
(**
) для рекурсии, активируйте shopt -s globstar
. **/*.c
. Чтобы изменить tabstop, добавьте +'set ts=2'
.
Однако нижняя сторона состоит в том, что он может замените вкладки внутри строк .
Итак, для немного лучшего решения (с помощью подстановки) попробуйте:
$ ex -s +'bufdo %s/^\t\+/ /ge' -cxa **/*.*
Или с помощью редактора ex
+ expand
:
$ ex -s +'bufdo!%!expand -t2' -cxa **/*.*
Для конечных пробелов см.: Как удалить конечные пробелы для нескольких файлов?
Вы можете добавить следующие в .bash_profile
:
# Convert tabs to spaces.
# Usage: retab *.*
# See: https://stackoverflow.com/q/11094383/55075
retab() {
ex +'set ts=2' +'bufdo retab' -cxa $*
}