文字列を検索し、ファイルのすべての行の先頭に改行を挿入するにはどうすればよいですか?

文字列を検索し、ファイルのすべての行の先頭に改行を挿入するにはどうすればよいですか?

---行の先頭に現れる文字列をファイル全体で検索したいと思います。次に、その文字列の各インスタンスの前に改行文字を挿入したいと思います。

私の.vimrcファイルに次のコマンドを追加しました。

let @p=":1,$s/^---/^M---/"

実行時に改行文字は挿入されません。代わりに、最初から始まるすべてを無視するので、^Mそれを---空の文字列に置き換えて、最初に含まれている3つのダッシュを各行から削除します。

@pコマンドにどのような問題がありますか?このキャラクターを認識できないようです^M。検索と置換コマンドでこれは許可されていませんか?ただし、:ファイルの下部にあるプロンプトに同じコマンドを入力すると、手動でこれを実行できます。

私も次のことを試しました。

let @p=":1,$s/^---/^M^[---/"

(改行の後にエスケープを追加) - これは私に同じ結果を与えます。脱出と残りの交換部品を無視しているようです。

誰かが私に正しい方法を教えてもらえますか?私は同じコマンドセットで多くのファイルを編集し(そして複数のマクロを含み、これらのマクロを除いてすべてうまくいきます)、vimrcファイルにこれらのコマンドを保存したいと思います。だから毎回作り直したくありません。同じマクロを使用して新しいファイルを開くとき。

ありがとうございます!

答え1

スクリプトの文字は入力したとおりに表示されます。したがって、^MEnterキーを押すとすぐに実行されます。だからあなたは書く必要があります

let @p=":1,$s/^---/^V^M---/^M"

マクロを手動で記録するときに入力する内容だからです。もちろん、これを書くには、次に、それからctrlV最後にctrlV入力するctrlV必要がありますctrlM

^Mまた、コマンドを実際に実行するには、バッファに入れるのではなく、最後にfinalを追加する必要があります。

ところで、パターンを繰り返す代わりに単純化して1,$使用%できるので、次のように書くことができます。&

let @p=":%s/^---/^V^M&/^M"

関連情報