vimrc增加如下内容即可:
vnoremap <M-=> :call Duiqi('\v(^\s*\S+)\s+(.*)')<CR>  "reg匹配的第2段文字对齐  
function! Duiqi(reg)  let l0 = line("'<")  let l1 = line("'>")  "获取第1个单词及前面空格的最大长度  let max = 0  let arr = {}  let l = l0  while l <= l1  let arr[l] = matchlist(getline(l), a:reg) "把字符串分成2段  let len = strlen(arr[l][1])  let max = (len > max ? len : max)  let l += 1  endwhile  let max += 1 "最长的后面要放一个空格  "设置strSpace  let strSpace = CreateSpaces(max)  "开始对齐  let l = l0  while l <= l1  call setline(l, arr[l][1].strpart(strSpace, 0, max-strlen(arr[l][1])). arr[l][2])  let l += 1  endwhile  
endfunction  "生成n个空格的字符串  
function! CreateSpaces(n)  let s = ''  for i in range(a:n)  let s .= ' '   endfor  return s  
endfunction  
函数参数用的正则表达式,例子中的正则是根据每行的第2个单词对齐,
主要就是两个()内匹配的内容。
使用方法:要先选中要对齐的行,再按Alt+=对齐,效果如下:

如果前面有空格,则效果如下:

如果想去除最前面的空格,修改参数为
'\v^\s*(\S+)\s+(.*)'
效果如下:

想修改对齐规则,则要自己设置正则了。