次のような複数のタブ区切りの列を含むテキスト ファイルがあるとします。
1 foo bar
3 bar foo
2 番目または 3 番目の列に基づいて並べ替えるにはどうすればよいですか?
:'<,'>!sort -n -k 2ビジュアル モードでの使用や のようなものを読みまし:sort /.*\%2v/たが、これらのコマンドはどれも機能していないようです。
組み込みsortコマンドを使用できます。
2 番目のタブ区切り列:sort /[^\t]*\t/で並べ替えるには、2 番目の列を並べ替えるために使用できます。3番目の列をソートするには、使用できます:sort /[^\t]*\t\{2}/
通常は、数値を列番号から 1 を引いた値に置き換えます (つまり、最初の列がインデックス 0 のインデックス列)。
sortvia と呼ばれる外部:'<,'>!sort -k 2は機能します。-nフラグ (数値ソート用) が指定されているが、使用する列が非数値である場合にのみ、結果は期待どおりになりません。したがって、 external を使用するには、例sortをドロップするだけです。-n
備考:私にも:'<,'>sort /.*\%2v/効果があります。
悲しいことに、同じファイル内のビジュアル ブロックを使用したり、1 つのコマンドを使用したりすることはでき:exないようCtrl-vです。selection:'<,'>sort
少しハックな「解決策」は、視覚的なブロックで並べ替えたいものを選択し、別のウィンドウで並べ替えて、変更を元のファイルに適用することです。このようなもの:
Ctrl-v+ selection+ x+ :tabnew+ p+ :sort+ Ctrl-vG$x+ :q+ `[P(整列ペースト)
出典: Barry Arthur - Sort Me A Column (bairui from #vim@freenode)。