3

多くの場合、次のように、一部のコードに初期化子のリストがあります。

class Foo(object):
    def __init__(self, data):
        self.foo       = data.getFoo()
        self.bar       = data.getBar()
        self.something = data.getSomething()

ご覧のとおり、コードをテーブルのように配置するのが好きです。DESCRIBE "foo";多くの場合、上記のコードは、他のプログラム(データベースなど)の出力からVimをスクリプト化することで生成できます。残念ながら、スクリプト化された出力は通常、最初は次のようになります。

class Foo(object):
    def __init__(self, data):
        self.foo = data.getFoo()
        self.bar = data.getBar()
        self.something = data.getSomething()

したがって、割り当てステートメントの自動生成後、すべてのステートメントを手動で調整して、目的の外観にする必要があります。

今:vimにステートメントの「後半」を自動的に揃えさせる方法はありますか?

4

3 に答える 3

3

表形式のプラグインはまさにこれを行います。ここで実際の動作を確認できます(そしてその使用方法を学ぶことができます

更新:プラグインの使用法について簡単に説明しますが、Drewのビデオよりも優れた説明はないので、ぜひご覧になることを強くお勧めします。

プラグインを使用するには、を呼び出すだけで、ファイル内のすべての等号:Tab /=が整列されます。整列する行を指定する場合は、範囲を指定するか、ビジュアルモード(または)を使用して目的の行を選択し、Tabularizeコマンドを押して挿入すると、コマンドラインは次のようになります。:5,10Tab /=vV::'<,'>Tab /=

コマンドの引数はTab正規表現です。これは、このコマンドを使用して多くのものを整列できることを意味します。正規表現の知識によってのみ制限されます。

英語の間違いでごめんなさい:D

于 2012-05-18T18:47:03.687 に答える
1

すでに述べた表形式のプラグインの代わりに、由緒あるAlignプラグインがあります。

于 2012-05-18T19:19:58.847 に答える
0

単純なアプローチの1つは、最初に等号の周りに十分なスペースを作ることです。

:s/=/                         =/

次に、ブロック選択(Ctrl-V)して、すべての=文字とそれに続くすべての文字を選択します。Yank(y)、それを別の場所に貼り付けます。

次に、貼り付けた行のインデントを解除して(10<通常は十分です)、左端の位置に揃えます。次に、もう一度ブロック選択して、切り取った場所に貼り付けます。

しかし、これは、望ましい効果を得るために、多くの作業のように感じます。

于 2012-05-18T16:35:37.100 に答える