Vimで選択したブロックをソートする方法を探しています。私は今それを行う方法このvimでブロックを並べ替え
{:a
:c
:b}
# after sort, it should be
{:a
:b
:c}
のようなものを持っているシナリオは、私が選択したブロックの上に並べ替えを実行している、新しいラインに:a
と:c
を入力して、後で戻ってブラケットを配置する必要があります。私はこの余分な操作をしないで並べ替える方法を探しています。
Vimで選択したブロックをソートする方法を探しています。私は今それを行う方法このvimでブロックを並べ替え
{:a
:c
:b}
# after sort, it should be
{:a
:b
:c}
のようなものを持っているシナリオは、私が選択したブロックの上に並べ替えを実行している、新しいラインに:a
と:c
を入力して、後で戻ってブラケットを配置する必要があります。私はこの余分な操作をしないで並べ替える方法を探しています。
以下はわずかあなたの努力を軽減しますが、それでも、それを完全に解決しません基本的に、それはコロンの後に来るものに基づいて並べ替えられます、そして、ブラケットを除去するが、それはあなたのために再度挿入しません。
:'<,'>sort /^.\{-}:/ |%s/{\|}//g
喜んで喜んでくれることを望みます。
これを行う方法の1つは、中かっこの内側をレジスタに読み込むことです。
"ayi{
これにより、コンテンツ、行、およびそれらの周りに中かっこはコピーされません。あなたが非表示バッファを変更しているよう
次に、あなたは、ソート機能
sort(split(getreg('a')))
これが設定されるmodifiable
フラグを必要にそれを実行することができます。バッファa
を所定の位置にソートします。あなたはそれを中括弧vi{"ap
の中に貼り付けることができます。
明らかに、関数/マクロまたはコマンドにwhileを入れる必要があります。
ここでは、Exコマンドを使用した方法の1つです。範囲のソートは、:global
と:sort
で非常に簡単です。次のコマンドは、中括弧で区切られたもの間の線を並べ替え:
:g/^{/+1,/^}/-1sort
しかし、ここで合併症が(あなたの例では)、中括弧はとしてに同じ(最初、最後)の行であるということですデータ。最初にそれらを隣接する行に分け、後で取り消す必要があります。プラグインはあなたのために良好であれば、あなたはここを参照してください、_vis.vim_を試すことができ
:%s/{\zs\|\ze}/\r/g
:g/^{/+1,/^}/-1sort
:%s/{\zs\n\|\n\ze}//g
:
:substitute
はそれを行うことができますhttps://vi.stackexchange.com/questions/9869/sorting-a-column-without -altering-other-columns – mbjoe