16

tabular.vim プラグインを使用して Python コードをフォーマットしようとしています。現在、これは sqlalchemy 宣言型クラスであり、次のようになっています。

id     =  db.Column(db.Integer, primary_key=True)
status    =  db.Column(db.Integer, nullable=False, default=3)
...etc...

リストの最初の等号だけを整列できるようにしたいと思います。

id     =  db.Column(db.Integer, primary_key=True)
status =  db.Column(db.Integer, nullable=False, default=3)
...etc...

ただの常連

: Tabularize /=

すべてにマッチするようで、すべてがおかしくなります。

よろしくお願いします!

4

4 に答える 4

25

次のコマンドを使用できます。

:Tabularize /^[^=]*\zs=

パターンは最初のにのみ一致し=ます。


これらの2行をに追加できます~/.vim/after/plugin/TabularMaps.vim

AddTabularPattern 1=    /^[^=]*\zs=
AddTabularPattern 1==   /^[^=]*\zs=/r0c0l0

次回は、次のコマンドを実行するだけです。

:Tabularize 1=

周囲にスペースが必要ない場合は、次のコマンド=を実行します。

:Tabularize 1==

于 2012-07-16T04:03:00.710 に答える
7

それを行うための優れたプラグイン: vim-easy-align

于 2014-05-23T14:06:55.117 に答える
2

この回答に従って、ケースごとに静的マッピングを作成する代わりに、次のようなvimコマンドを設定することでこれを動的に行うことができます:

command! -nargs=1 -range TabFirst exec <line1> . ',' . <line2> . 'Tabularize /^[^' . escape(<q-args>, '\^$.[?*~') . ']*\zs' . escape(<q-args>, '\^$.[?*~')

このコマンドを使用して、最初に基づいて整列したい場合は、次の=ことができます。

:TabFirst =

または、最初に揃えたい場合は、次のように{します。

:TabFirst {

これは、範囲選択と Tabularize のスマート選択をサポートします。

于 2013-12-11T22:23:47.503 に答える