Как я могу автоматически отформатировать файл git mailmap при сохранении в Vim? - PullRequest
0 голосов
/ 10 марта 2019

Я использую файлы mailmap для некоторых git-репозиториев. Строки в файлах могут быть в одном из этих форматов :

Proper Name <commit@email.xx>
<proper@email.xx> <commit@email.xx>
Proper Name <proper@email.xx> <commit@email.xx>
Proper Name <proper@email.xx> Commit Name <commit@email.xx>

Я хочу сохранить строки в формате таблицы со столбцами, разделенными двумя пробелами, например,

Some Dude     <some@dude.xx>              <bugs@company.xx>
Other Author  <other@author.xx>           <bugs@company.xx>
Other Author  <other@author.xx>           <nick2@company.xx>
Santa Claus   <santa.claus@northpole.xx>  <me@company.xx>

Как я могу заставить Vim переформатировать файл почтовой карты таким образом при сохранении (например, если новое имя слишком велико для размера столбца)? Я думаю, что это возможно с такой автокомандой:

autocmd BufWritePre mailmap :<reformat_cmd>

но я не уверен, как реализовать настоящую команду.

1 Ответ

0 голосов
/ 11 марта 2019

Если вы используете Linux, вы можете использовать column. Но нам нужно отметить, где каждый столбец заканчивается первым. Для этого я добавляю сюда # перед каждым разделом, используя sed:

:autocmd BufWritePost mail silent :%!sed 's/^\([^<]\+\)\?*\(<[^>]\+>\)*\([^<]\+\)\?*\(<[^>]\+>\)\?/\1 \#\2 \#\3
 \#\4/' | column -t -s '\#'

Вы можете легко расширить его и / или использовать команду s непосредственно в vim на BufWritePre.

...