空白区切りの文字列をそれぞれのワードで括る簡単なやり方

vim-jp の slack で以下のような質問をした

f:id:bamch0h:20190709220350p:plain

すると、すぐに数人の方からレスポンスをいただいた。

置換を使う方法や

f:id:bamch0h:20190709220716p:plain

ciw と ドットオペレーションと組み合わせてやる方法

f:id:bamch0h:20190709220758p:plain

マクロを使うことを提案していただいたりもした。

f:id:bamch0h:20190709220822p:plain

置換を使う方法で、 & が 使われていて、私はこの記号を使ったことがなかったので勉強になった。おそらく、 検索文字全体を表す記号 なんだとおもう。

また、ciw と ドットオペレーションを組わせてやる方法では、 <C-R><C-O>レジスタの中身を挿入することでドットオペレーションで繰り返しても問題なく動作するようにするテクニックが使われており、色々と勉強になった。

ciwとドットオペレーションの繰り返しでは、<C-R> でやる方法ではうまくいかない。

f:id:bamch0h:20190709222515p:plain

理由は以下の通り、<C-R> ではドットレジスタに挿入後の値が入ってしまうため、繰り返しても期待した動作にならない。 <C-R><C-O> は ドットレジスタ<C-R><C-O がそのまま積まれるので、繰り返しても都度レジスタの内容が展開され、問題なく動作するということのようだ。

f:id:bamch0h:20190709222751p:plain

結論

Vim は奥が深い!!