多行中间缩进

rud*_*ph9 6 vim indentation

我经常遇到这样的情况:

title : Jekyll Bootstrap
tagline: Site Tagline
author :
  name : Name Lastname
  email : blah@email.test
  github : username
  twitter : username
  feedburner : feedname
Run Code Online (Sandbox Code Playgroud)

如果参数没有排列好,是否有一种标准方法vim可以将每个相应的参数与最近的缩进对齐,其中缩进定义为 2 个空格,而不必逐行通过,例如在以下内容中:

title   : Jekyll Bootstrap
tagline : Site Tagline
author  :
  name      : Name Lastname
  email     : blah@email.test
  github    : username
  twitter   : username
  feedburner: feedname
Run Code Online (Sandbox Code Playgroud)

更新:

我相信tabular.vim是我正在寻找的插件,但我很难形成一个正则表达式,当决定某些东西应该是块的一部分时,它会考虑行首的空格数,即Tabularize/:产生:

title       : Jekyll Bootstrap
tagline     : Site Tagline
author      :
  name      : Name Lastname
  email     : blah@email.test
  github    : username
  twitter   : username
  feedburner: feedname
Run Code Online (Sandbox Code Playgroud)

这是文档中的一个示例,其中通过正则表达式实现以下功能:

abc,def,ghi
a,b
a,b,c
Run Code Online (Sandbox Code Playgroud)

:制表 /^[^,]*\zs,/r0c0l0

abc,def,ghi
  a,b
  a,b,c
Run Code Online (Sandbox Code Playgroud)

但是我不确定如何在考虑同一块前面的每一行具有相同数量的空格,同时仍然评估子块时如何表达这一点,例如以下比我的原始示例更复杂的子块:

comments :
  provider : disqus
  disqus :
    short_name : jekyllbootstrap
  livefyre :
    site_id : 123
  intensedebate :
    account : 123abc
  facebook :
    appid : 123
    num_posts : 5
    width : 580
    colorscheme : light
Run Code Online (Sandbox Code Playgroud)

将转化tabularize\some_regular_expression_I_cant_figure_out为:

comments :
  provider      : disqus
  disqus        :
    short_name    : jekyllbootstrap
  livefyre      :
    site_id       : 123
  intensedebate :
    account       : 123abc
  facebook      :
    appid         : 123
    num_posts     : 5
    width         : 580
    colorscheme   : light
Run Code Online (Sandbox Code Playgroud)

Ber*_*ard 4

vim 的Tabularize插件可以完全满足您的需求。归结为打字Tabularize /:

然而,这可能不会保留左侧的缩进。

编辑您更新的问题:我无法直接使用表格来执行此操作,但我可以使用第二个命令来执行此操作,该命令是在范围内搜索和替换:

 :%s/\([ ]*\)[[:alpha:][:punct:]]*[ ]*/\0\1/
Run Code Online (Sandbox Code Playgroud)

这会搜索 前面的一定量的空格:,并将它们粘贴到分号之前。