Одна действительно важная вещь - это то, что отслеживаемый контент должен быть стандартизирован. Вы и другой разработчик просто должны договориться о чем-то там. Любой из вас, кто хочет что-то сделать помимо согласованного стандарта, может привести к неоднозначным результатам. Не всегда возможно чисто конвертировать туда и обратно.
Я бы порекомендовал просто разобраться с этим. У меня есть собственное мнение о вкладках и пробелах, и я работал над кодом, используя каждую. Лучшее, что нужно сделать, - это просто настроить редактор в соответствии со стандартизированным стилем и следовать ему. В vim, выключите вкладку «расширение», установите для табуляции то, что вам нравится.
Если вы все еще хотите попробовать, есть два основных способа:
Используйте автокоманды в Vim для преобразования при чтении / записи. Вам, вероятно, понадобятся BufReadPost
, BufWritePre
и BufWritePost
. (Для написания вы конвертируете в стандарт, пусть Vim напишет его, а затем вернется обратно к тому, как вы хотите редактировать.) Убедитесь, что tabstop установлен так, как вам нравится, и что-то вроде этого (не проверено):
set tabstop=4
autocmd BufReadPost * set expandtab | retab
autocmd BufWritePre * set noexpandtab | retab!
autocmd BufWritePost * set expandtab | retab
*
- это файл, к которому это будет применяться; возможно, вам придется возиться с этим или добавить только автокоманды для файлов в определенном каталоге, чтобы убедиться, что этого не происходит для всего, что вы редактируете. Обратите внимание, что это опасно; например, он заменит буквенные символы табуляции внутри строк.
- Используйте грязные / чистые фильтры Git. Вы можете прочитать о них в
man gitattributes
или в Pro Git . Вы можете использовать их для преобразования для редактирования, а затем вернуться к стандарту для фиксации. Если нет никакого странного отступа, это может быть так же просто, как заменить ведущие вкладки на некоторое количество пробелов и пробелы на долю от этого количества вкладок. Делайте это с помощью sed / perl / indent, как вам удобно.