5

膨大な数のリストがあり、各行の最後にコンテンツを追加したいと考えています。それは次のようなものです:

前:

123123
123123
13234
124125
12634
5234

後:

123123, 1
123123, 2
13234, 3
124125, 4
12634, 5
5234, 6

いくつかのポイント:

  1. :range s/oldpattern/newpattern/古いパターンを新しいパターンに置き換えることはわかっています。

  2. for i in range(begin, end) | something | endfor私はそれがそれらの余分な数を生成できることを知っています.

ただし、それらを組み合わせて自分のやりたいことを実行できるかどうか (または別の方法があるかどうか) はわかりません。これらの余分な値を自動的に追加する方法を知っている人はいますか? Vim を使用してそれが可能であると確信していますが、方法がわかりません。

4

3 に答える 3

5

これを行うには、領域を視覚的に選択してから入力します

:s/$/\=', '.(line('.')-line("'<")+1)<CR>

:(ビジュアル モードから入力すると、範囲が自動的に追加されます)。取得にはビジュアルモードが必要ですline("'<")。行番号の代わりに任意の範囲を入力しても問題ない場合は、任意の範囲を使用してください。

于 2012-11-17T21:15:32.160 に答える
2

私はするだろう

:%!nl
:%s/\v^\s*(\d+)\s+(.*)$/\2, \1/g

nl は(デフォルトで)空行の番号付けをスキップします

またはワンライナーとして

:exec "%!nl"|%s/\v^\s*(\d+)\s+(.*)$/\2, \1/g
于 2012-11-17T21:24:46.723 に答える
0
:%!awk '{print $0", "NR}'

また

:%!perl -lpe '$_.=", $."'
于 2012-11-17T22:10:13.273 に答える