ファイルにこの単語のインスタンスが203個あり、ubuntu
各インスタンスをに置き換えようとしていますUBUNTU_X
。ここで「X」はインクリメントカウンタです。つまり、元のファイルは次のようになります。
ubuntu xxxxxxxx ubuntu xxxxxxxx ubuntu xxxubuntuxxx xxxubuntu ubuntuxxxxxx ...
私はそれを次に変更したいと思います:
UBUNTU_1 xxxxxxxx UBUNTU_2 xxxxxxxx UBUNTU_3 xxxUBUNTU_4xxx xxxUBUNTU_5 UBUNTU_6xxxxx ...
最後の発生は次のようになります。UBUNTU_203
答え1
ggOUbuntu_0
Esc0"ndeddqq/\<Ubuntu\>^Mde"nP^Ab"nyeq999@q
ノーマルモードで入力すると希望の効果が得られます。
説明する:
gg
- ファイルの最初の行に移動O
- 現在の行の上に新しい行を作成し、挿入モードに入ります。Ubuntu_0
- テキストを入力してください- Esc- 挿入モードを終了して継続使用Ctrl[
0
- 現在行の先頭に移動"nde
- n登録に行き、単語の最後まで削除dd
- 現在行を削除qq
- レジスタqへのマクロ書き込み開始/\<Ubuntu\>^M
- Ubuntuを検索してください。 \<と\>は単語の境界を表し、Ctrl-MはEnterを押すのと同じです。de
- 単語の最後まで削除"nP
- レジスタnの内容をカーソル位置の前に置きます。^A
- Ctrl-A、カーソルの下の数字に1を追加b
- 現在の単語の先頭に移動"nye
- nを登録して、現在の単語の終わりまでテキストをコピーします。q
- マクロ記録の停止999@q
\<Ubuntu\>
- レジスタqに書き込まれたマクロを999回実行します。 (またはパターンが見つからない場合は停止します。)
特定の要件によっては若干変更される場合があります。たとえば、「Ubuntu」を完全な単語にのみ一致させたいとします。私はまた、あなたが与えられた大文字と小文字を一致させたい場合、または大文字と小文字を無視することを有効にした場合、「ubuntu」のさまざまなケースがすべて「Ubuntu」に変換されることを気にしないと仮定します。
答え2
一部のLinuxディストリビューションでは、Perlサポートでvimをコンパイルしました。この場合、a:perldo command
とaがあります。:perl command
:perldo s/ubuntu/"UBUNTU" . ++$a/ge