数行ごとに並べ替え


7

以下をキーに基づいて並べ替えたい

case IndexError:
    PyErr_SetString(PyExc_IndexError, exc.str.c_str());
    break;
case ValueError:
    PyErr_SetString(PyExc_ValueError, exc.str.c_str());
    break;
case RuntimeError:
    PyErr_SetString(PyExc_RuntimeError, exc.str.c_str());
    break;
case IOError:
    PyErr_SetString(PyExc_IOError, exc.str.c_str());
    break;

そうなる

case IOError:
    PyErr_SetString(PyExc_IOError, exc.str.c_str());
    break;
case IndexError:
    PyErr_SetString(PyExc_IndexError, exc.str.c_str());
    break;
case RuntimeError:
    PyErr_SetString(PyExc_RuntimeError, exc.str.c_str());
    break;
case ValueError:
    PyErr_SetString(PyExc_ValueError, exc.str.c_str());
    break;

本質的に、私は行をソートするだけです

case IOError:
case IndexError:
case RuntimeError:
case ValueError:

他の行(aで始まらない行)の内容はcase重要ではありませんが、大文字と小文字で並べ替えてください。


1
副次的な解決策は、casesの内容が類似しているため、全体を再生成できることです。並べ替えられた*Errorsを取得し(enum?から?を介して実行される場合がありsort(1)ます)、すべての列挙値に変換XErrorcase XError: PyErr_SetString(PyExc_XError, exc.str.c_str()); break;て実行するマクロを作成します。
Shahbaz

私自身はこれを使用していませんが、vis.vim はそれを使用すると主張しています。(リンクのセクション4を読んでください。)ここから
Dan

回答:


7

簡単な方法:ソートする前に論理ブロックの行を結合します。

詳細に:

  • 線を引く
  • インデントされた行を上の行に結合します。 :'<,'>s/\n /^A/
  • 行をもう一度マークします。 gv
  • それらを並べ替える: :'<,'>sort
  • 行をもう一度マークします。 gv
  • 行を元に戻し、インデントを元に戻します。 :'<,'>s/^A/\r /g

^A上記は文字Ctrl-A(ASCII SOH)です。並べ替える行には表示されないがCtrl-A、請求書には合う任意の文字を指定できます。として入力できますCtrl-vCtrl-a


2

アイデア:n大文字と小文字を区別する行数を1行に結合しましょう。すべてのケースのプロセスに従います。次に、並べ替えを使用してケースを並べ替えます。次に、それらの行を切り取ってインデントします。

手順:

1)これを入力して、n次の行に参加caseします。(あなたの場合、nは3です)

:g/case / normal! 3gJ

2)ビジュアルモードを使用して、このようなケースをすべて選択します。vot Vを押してすべてのケースを選択します。を押し:ます。のように表示され:'<,'>ます。sortと入力します。

:'<,'>sort

3)ケースのラインをその下に置きます。gvを押して再度選択します。

:'<,'>s/\(;\|:\)    /&\r    /g

これにより、ケースラインが分割されます。行が適切にインデントされていない場合は、を選択してgvから整列できます==

これは、目的に合わせてカスタマイズされたステップを使用する場合、任意の数の行で機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.