4

私はこのようなファイルを持っています:

file1
file2
file3
.
.
.
filen

私はそれをに変換したい:

echo "file1"
cat file1
echo "file2"
cat file2
.
.
.
.
echo "filen"
cat filen

1つの方法は、forループを作成して元のファイルのコンテンツを読み取り、変更されたコンテンツを別のファイルに書き込むことです。これを実行すると、機能しました。vimthrough:gまたは他のコマンドで同じことを行うコマンドはありますか?

4

3 に答える 3

8

これを試して:

:%s/.*/echo "\0"\rcat \0/g

説明:

:%s/a/b/gファイル全体を検索し、に置き換えることaを意味しますb

.*1行ですべてのものを一致させることを意味します。

\0一致したものを意味します。

\r新しい行を意味します。

于 2012-07-06T10:26:42.323 に答える
3

または、マクロを適用することもできます

yypha"<esc>^iecho "<esc>j^icat <esc>j
  • yypha"現在の行をヤンクすると、現在の行より下に配置され、h
  • a"<esc>aを追加して"、通常モードに戻ります
  • ^iecho "<esc>echo "の前に置き、file*再び通常になります
  • j^icat<esc>次の行に猫を追加し、
  • j最後に次の行に移動して、マクロを再適用する準備をします

qq説明されているようにボタンとボタンを押してマクロを記録するか、

thenとして入力してyypha"^[^iecho "^[j^icat ^[j書き込み、次にq番目のレジスタの行をヤンクします。これは実行可能マクロでもあります。^[Ctrl-VEsc"qyy

@qマクロ自体は1回または30@q30回実行できます。

于 2012-07-06T11:04:22.867 に答える
1
于 2012-07-06T21:52:52.097 に答える