このようなタスクを実行するには、vim globalコマンドを使用します。これは、行の先頭に反復を追加するか、テキスト内のシンボルを変更する場合に適用されます。他のソリューションよりも複雑に見えますが、便利な場合はかなり柔軟なパターンを使用でき、あまり考えなくても簡単に変更できます。
最初に、範囲(これを適用する行)を選択します。私は通常マークを使用し(たとえばma
、最初の行とmb
2番目にありますが、行番号または視覚的な選択を使用することもできます)、次のコマンドの変更を入力します(現在、ユースケースに合わせて調整されています)
:let i=1|'a,'bg/^/s/^/\=i.". "/|let i=i+1
脱構築
:let i=1
これi
により、変数に開始値が設定されます。通常、リストは1で始まるため、iを1に設定しています。
|
バーは新しいコマンドを開始します
'a,'b
これにより、次のコマンドの範囲が設定されます。リストの最初の行と最後の行に設定されるa
mark からmarkに移動しb
ます。
g/^/
これはグローバルコマンドです。ファイル(または範囲)で特定の正規表現を検索し、一致した各行でコマンドラインの残りを実行します。「行頭」を検索して、すべての行を照合しています。次のようなテキストがある場合
Item some txt
other text
Item second item
whatever
Item third
そして、これらのラベルをItem
他の行の前に置き、他の行を無視したい、do g/Item/
またはg/^Item/
代わりに(リテラルのItemテキストを仮定して)
s/^/\=i.". "/
これにより、正規表現が実行され、行の先頭がi
a で連結された値に置き換えられ.
ます。通常、これは何でもできます(Item
たとえば、ラベルを番号に置き換えます)。
|let i=i+1
バーは新しいコマンドを開始しますが、グローバルが完了した後ではなく、グローバルコマンド内で実行する2番目のコマンドを設定します。その結果i
、次の行がgによって処理される前にインクリメントされます。柔軟性の別の場所があります。iの変更は何でもかまいません(2ずつインクリメントし、フィボナッチ数列の次の要素を生成する関数を呼び出します)。
awk
おそらくこの仕事のためのツールです。しかし、私はWindowsを使用しています(ため息)。