Vimでヤンクした文字列と対象を簡単に入れ替えるoperator-replaceプラグインを使う

参考にした記事でも書かれているけど、このプラグインは文章では説明しづらいけど、使ってみるととても便利だと納得できる系。おすすめ。 大雑把に言うと、普段3ステップでやっているコピペ作業を、2ステップで出来るようにするプラグイン、という感じ。

インストール&セットアップ

以下の2つのプラグインをインストールする。

operator-user - Define your own operator easily : vim online operator-replace - Operator to replace text with register content : vim online

.vimrcには以下のように記述する。

" _wなどでYankしてるもので置き換える
nmap _ <Plug>(operator-replace)

割り当てるキーは上記である必要はなく、参考にした記事いつもvimrcの参考にさせてもらっているyuroyoroさんの記事ではRに割り当てていた。たしかにR(eplace)のほうが覚えやすいかもしれないけれど、上書きモードを潰すのはちょっと勿体無い気がしたので、とりあえずアンダースコアにした。

operator-replaceプラグインの使い方

例えばこんなコードがあったとして、”you win.”と出力させるために、hogeの値を”yay! yay!”に変えたくなったとする。

hoge = "booo! booo!"
if hoge == "yay! yay!"
  "you win."
end

普通は、

  1. 3行目のif文の”yay! yay!”の中にカーソルを持って行き、yi"と打ってヤンクする
  2. 1行目の変数hogeの”booo! booo!”の中にカーソルを持って行き、di"と打って中身を削除する
  3. そのまま同じ位置で、"0Pと打ってペーストする

という3ステップでコピペを完了させる。というか自分はそうしてる。これをoperator-replaceプラグインを使って操作すると、

  1. 3行目のif文の”yay! yay!”の中にカーソルを持って行き、yi"と打ってヤンクする
  2. 1行目の変数hogeの”booo! booo!”の中にカーソルを持って行き、_i"と打って中身を入れ替える

の2ステップでコピペができるようになる。地味だけど、かなり便利になる!


vim神のplugin operator-replaceを導入してみて思ったこと - yamazakiccsのvim日記