web-dev-qa-db-ja.com

Vimのファイル内の他の場所からのレジスタまたは行の範囲の内容で置換

私はVimを使用していますが、プレースホルダーテキストを、ファイルの別の場所に既に書き込まれている複数行にわたる長い文字列に置き換えたいと考えています。

パターンをレジスタの内容に置き換えることはできますか?何かのようなもの

:%s/foo/<contents of register A>

それ以外の場合、一連の行に置き換えることは可能ですか?何かのようなもの

:%s/foo/<content of lines from 10 to 15>
64
Paolo Tedesco

http://vim.wikia.com/wiki/Search_and_replace によると次のように表示されます。

:%s/foo/\=@a/g

また、挿入モードで<c-r>aを押すと、レジスタaの内容が挿入されます。

かっこいい-私はそれを知りませんでした。良い質問。

<c-r>に関係する他のいくつかのこと: http://vimdoc.sourceforge.net/htmldoc/cmdline.html#c_CTRL-R

85
David Wolever
:%s/foo/\=getline(10, 15)/g

:%s/foo/\=join(getline(10, 15))/g
20
Mykola Golubyev