0

我将邮件映射文件用于一些 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>

我想将行格式化为表格,列用 2 个空格分隔,例如

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>

但我不确定如何实现实际命令。

4

1 回答 1

0

如果你在 Linux 上,你可以使用column. 但是我们需要标记每列首先结束的位置。为此,我在每个部分之前添加 # 使用sed

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

您应该能够轻松扩展它和/或s直接在 vim on 中使用命令BufWritePre

于 2019-03-11T14:14:34.940 回答