複数行の途中でインデント

複数行の途中でインデント

私はしばしば次のような状況に直面しています。

title : Jekyll Bootstrap
tagline: Site Tagline
author :
  name : Name Lastname
  email : [email protected]
  github : username
  twitter : username
  feedburner : feedname

引数が正しくソートされていない場合、vimそれぞれの引数が最も近いインデントと整列するようにフォーマットする標準的な方法はありますか?ここで、インデントは、次のように1行ずつ移動する必要なく、2つのスペースとして定義されます。 :

title   : Jekyll Bootstrap
tagline : Site Tagline
author  :
  name      : Name Lastname
  email     : [email protected]
  github    : username
  twitter   : username
  feedburner: feedname

修正する:

私は信じるテーブル.vim私が探しているプラ​​グインですが、何かがブロックの一部でなければならないと判断したときに、行の先頭のスペースの数を考慮する正規表現を設定するのに問題がありますTabularize/:。結果は次のとおりです。

title       : Jekyll Bootstrap
tagline     : Site Tagline
author      :
  name      : Name Lastname
  email     : [email protected]
  github    : username
  twitter   : username
  feedburner: feedname

これは例です文書以下は正規表現で実装されています。

abc,def,ghi
a,b
a,b,c

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

abc,def,ghi
  a,b
  a,b,c

しかし、同じブロックの前のすべての行が同じ数のスペースを持ち、サブブロックを評価することを考えると、それを定式化する方法がわかりません。これは元の例よりも複雑です。

comments :
  provider : disqus
  disqus :
    short_name : jekyllbootstrap
  livefyre :
    site_id : 123
  intensedebate :
    account : 123abc
  facebook :
    appid : 123
    num_posts : 5
    width : 580
    colorscheme : light

次のように変換されます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

ベストアンサー1

これ表のvimプラグインはあなたが必要とすることを正確にすることができます。タイピングに入りますTabularize /:

ただし、これを行うと左インデントが維持されない可能性があります。

更新された質問を編集:Tabularを使用してこれを直接実行することはできませんが、範囲内で検索して置き換える2番目のコマンドを使用して実行できます。

 :%s/\([ ]*\)[[:alpha:][:punct:]]*[ ]*/\0\1/

前のスペースを一定量検索して:セミコロンの前に貼り付けます。

おすすめ記事