4

vimの組み込み機能を使用して複数行のインポートを(アルファベット順に)並べ替える方法はありますか?

例えば

import Fred
import Foo, Baz,\
     Bar, Spam, Eggs
import Python

次のようになります。

import Foo, Baz,\
     Bar, Spam, Eggs
import Fred
import Python

:helpsortをチェックしました。特にパターンマッチングは私が望むものに近づきますが、それはインポートされたクラスをソートされたブロックの下に分離したままにします。

4

2 に答える 2

5

Vimは行でのみソートできます。だからあなたはできる

  • \\\nに置き換える|
  • 選別
  • |に置き換える\\\n

これを試して:

:%s/\\\@<=\n/|
:sort
:%s/\\\@<=|/\r

注: \@<=ここと同じ\zsです。

于 2012-08-27T01:28:14.373 に答える
1

おそらくそれは完全には関連していませんが、この質問はGoogleの最初のヒットの1つvim sort python importsなので、ここに残しておきます。

複数行のインポートについて心配する必要はないが、フォームimport xyzfrom xyz import xyzフォームの両方を処理したい場合は、次のコマンドが役立ちます。

:sort /[if][^ ]*/

これは、「パターンに一致するものはすべて無視し、次に来るもので並べ替える」ことを意味します。

于 2017-08-04T20:26:42.587 に答える