vim文字列の周りを見つけて置き換える

vim文字列の周りを見つけて置き換える

たとえば、VIMにテキストがある場合

http://a.com
http://b.com

すべての行(全行)を見つけて前後に出る行に置き換えることは可能ですか?たとえば、次のようになります。

<a href="http://a.com">http://a.com</a>
<a href="http://b.com">http://b.com</a>

各行に対してテキストが繰り返されます。 hrefについては一度、テキストについては一度。

答え1

:%s:.*:<a href="&">&</a>:

ed/sed/perlと同じです...

あまり似ていませexんが、より類似した別のvimアプローチは次のとおりです。 1行に1回行う方法がわかっている場合は、マクロとして記録してからそこからマクロを実行してください:%normal @mm

類似(通常モード):qmS<a href="<Ctrl-R>""><Ctrl-R>"</a><Esc>qマクロを記録します。

答え2

なぜパイプを使用しているのですか?

:%s/.*/\<a href=\"&\"\>&\<\/a\>/g

(すべてのコマンド文字列を\で表示)

関連情報