2009-08-30 11 views
30

Vim 6.0を使用する。Vimで数字とリテラルの列を並べ替える方法

sdfsdg 
dfgdfg 

34  12 
2  4 
45  1 
34  5 

2番目の列を並べ替えるにはどうすればよいですか?

+1

関連...)カラムは10進数の最初のカラムになりますが、ヘルプには「:sort n」を使うことができます。「With [n] ...ソートは行の最初の10進数で行われます。 .. "これはあなたのケースには当てはまらないが、誰かにはそうかもしれない。 – Rabarberski

答えて

35

あなたが利用できるまともなシェルを持っている場合は、あなたがつもり、コロンを入力した後、ビジュアルモードでマーカーこれを入力すると、自分の番号を選択し、

:'<,'>!sort -n -k 2 

のコマンドを実行して「<は、」>自動的appeadれ、残りの部分を入力するだけです。

この種類のコマンド(:[motion]!)は、というフィルタリングと呼ばれます。例えば、

:h filter 
+0

これの例: '<,'>!sort -n -k 2? E20::マークこれはビジュアルモードコマンドです – vehomzzz

+0

私は、エラーを取得 '、自動的に視覚的な選択範囲'」<,'> 'を挿入し、実際のコマンド '!sort -n -k 2'をタイプします。もちろん、どのような方法でも範囲を指定することができます。好奇心が強い場合は ':help range'を参照してください。 – vehomzzz

+4

に設定されていません - パベルは、その後、範囲を選択するには、 'V'を使用し'型付け: – Cascabel

29

ソートVimのsortコマンドを使用して、2列目のすべての行Nを:あなたはVimのヘルプを参照することにより、より多くのを学ぶことができます

:sort /.*\%2v/ 

参考:vimtips.txt

+5

うわー、vimには内部仕分け手順があります!その奴はどれくらい巨大ですか? –

+0

vim 6.0ではソートコマンドがありません: – vehomzzz

+0

アップグレードできない理由は何ですか?vim.orgでは7.2が最新の安定版ですとお伝えします –

15

vim7のために私は行くだろう:これは、与えられた正規表現にマッチしたテキストを無視して数字をソートします

:sort n /.*\s/ 

。あなたの場合は2列目です。

11

、その後ビジュアルモード(例えばコントロール + V)でそれを選択することにより、2番目の列で並べ替え、実行します。

!sort 

または3番目の列で

sort -k 3 

または

をソートします
:sort /.*\%3v/ 

また、あなたがShiftキー + Vコマンドを使用して並べ替えたい行を選択します。その後

!sort -k 3n 

を入力するか、またはすべての行のソート何に最初の二つの単語をスキップするようにVimを伝えるために以下のコードを使用して、次のとおりです。

:%sort /^\S\+\s\+\S\+\s\+/ 

または8行によって、すなわちソート:

:sort /.*\%55v/ 

「仮想」仕様は、

単一文字(まもなく、それは8つのスペースとしてタブをカウントしない)ようにスペース+タブを扱うカラムの絶対数、です

ので、最後の列でソートするには:あなたの第二(または第三、第四あれば、

:%sort /\<\S\+\>$/ r 
+0

これは答えです。 'ソート! 'もいいですね。 – firedev

関連する問題