2016-03-28 12 views
1

を含むいくつかのPythonの代入文、一連の整列させるためにVimを使用:Iは、Vimを使用して、以下のように「=」を使用して代入文を整列できるようにしたい論理文

var1 = a1[a1 >= 20] 
variable2 = array2[array2 >= 20] 
var_5 = arr3[arr3 != 10] 

問題は、vimのAlignコマンドが、代入文と等価文に使用されている "="を使用することです。それから私は得る:

var1  = a1[a1 >   = 20] 
variable2 = array2[array2 > = 20] 
var_5  = arr3[arr3 !  = 10] 

は、これが問題になるの両方の代わりに、読みやすさを増しているため、それを台無しにし、それは論理演算子を遺跡からです。

は、私は、コマンド

:AlignCtrl \<=\> 

を使用してみましたが、それは助けにはなりませんでした。

おかげ

答えて

2

それはvimのアライメントに来る、私はTabular Pluginを使用します。 Drew Nealの素晴らしいスクリーンキャストを表形式でご覧ください:http://vimcasts.org/episodes/aligning-text-with-tabular-vim/

本質的に、表形式は、正規表現に一致するテキストに整列します。正規表現で

:Tabular /[<>=!]\+ 

入力

var1 = a1[a1 >= 20] 
variable2 = array2[array2 >= 20] 
var_5 = arr3[arr3 != 10] 

出力

var1  = a1[a1   >= 20] 
variable2 = array2[array2 >= 20] 
var_5  = arr3[arr3  != 10] 

角括弧文字クラス、一致する単一の文字、すなわち集合を表します。正規表現[<>=!]\+は、「<,>,=、または!」という文字の1つ以上の出現と一致することを意味します。

:Tabular /[][<>=!]\+ 

が同様に括弧をallignます:

var1  = a1  [ a1  >= 20 ] 
variable2 = array2 [ array2 >= 20 ] 
var_5  = arr3 [ arr3 != 10 ] 
+0

ありがとう!私はTabularを知らなかったし、ビデオは良かった。私はまだ正規表現になると、初心者です。私が理解しているように、あなたが指定した式は角カッコ内の任意の文字を選択します。式は、最初のインスタンスでは単一の=に整列するように指示しますが、2番目のインスタンスではさまざまな組み合わせに合わせるように指示します。また、角括弧をさらに整列させたい場合はどうしますか?大括弧内に\をしますか? – Shawn

2

あなたはプラグインvim-easy-alignを使用することができます。これは、整列に使用されるデリミタの最初のオカレンスのみを指定します。

+0

おかげで私は、]文字が文字クラスの終わりを示しているので、その意味があいまいになるように、あなたは開口部[の直後に配置する必要がありますvim-easy-alignに気づいていなかった。正直なところ、私は最初のものをやっているとは考えていませんでした。これはしばしば役に立ちます。実際、私はオプションもAlignで利用できると思います。しかし、多くの場合、複数の区切り文字を整列させたいときや、他のものが混在しているときがあります。私が指摘した文書を見ました。 * =は、その中に=を持つすべての演算子について自動的に整列します。あれは正しいですか?また、オペレータをまったく持たないインクルードラインは無視されるようですが、それは正しいのですか? – Shawn

+0

はい、あなたは正しいです。 – ronakg

3

あなたが使用しているスクリプトを整列していないとわからないのですが、おそらくregexをサポートしていて、あなたのアイデアは近かったのです。しかし、>は単語境界としてカウントされるので(実際にはあなたの'iskeyword'オプションに依存します)、単語境界正規表現は正しいオプションではありません。あなたは、空白が先行等号で揃えてみてください:

:AlignCtrl \s= 

それとも、この場合はスペースが整列フィールドに含まなっていると、あなたはそれを削除したい場合は、使用している場合:

:AlignCtrl \s\zs= 
+0

ありがとう、私は博士チップのスクリプトを使用しています。私は上記のあなたの提案を試みたが、それは投稿として役立たなかったが、私が単にしたとき:整列\ s =それは動作します。理由は何ですか? – Shawn

関連する問題