Vim で最後に選択した範囲を再選択するのに gv コマンドが便利
Vim の Visual モードで最後に選択した範囲をもう一度選択したいという時に便利な gv
コマンドを紹介します.
gv
の基本的な使い方として, 例えば次のような Ruby のコードで:
j^v$g_
で puts 'foo'
の部分のみ Visual モードで選択し:
y
でヤンク (コピー) してから:
gv
で直前に Visual モードで選択した範囲を再選択できます:
Visual モードであれば, 普通の Visual モードに加えて, Visual Line, Visual Block でも同じように gv
を使うことができます.
gv
のより具体的な 3 つの例
Ruby コードで gv
を使ったより具体的な 3 つの例を紹介します.
Visual モードで >
したコードを再選択する
次の Ruby コードで foo
メソッドを右に一つインデントしてから, Foo
クラスの中に移動させたいという場合に gv
を使うと便利です:
まず 2jVG
で Visual Line で foo
メソッドの行選択をします:
そして >
で右に一つインデントさせます:
ここで gv
を使って直前の foo
メソッドの行選択を再度行います:
d
で切り取り:
P
で Foo
クラスの中に貼り付けます:
このように gv
を使うと少しだけ便利になりますよね.
別に gvd
でなくても dG
で同じように切り取れますよねというご指摘がありましたら , 全くその通りなのですが, dG
の場合だとどこまで切り取るかということを視認しなくてはいけませんが, gvd
だったら別に視認する必要なく, 前の Visual モードの選択範囲が切り取られるとわかるので, ほんの少しだけ頭の CPU の負荷を抑えることができるかと思います.
Visual モードで p
or P
したコードを再選択する
次の Ruby コードで foo
メソッドを切り取って, Foo
クラス内の bar
メソッドを Visual モードで選択し, それを p
で置換し, gv
で置換に使用した foo
メソッドを再選択し >
で右に一つインデントさせます:
なのでまず 6jdG
で foo
メソッドを切り取り:
kV3k
で bar
メソッドを Visual モードで選択し:
p
で選択中の bar
メソッドを, 先ほど切り取った foo
メソッドで置換します:
そしてここで gv
で, その置き換えた foo
メソッドを再選択し:
>
で右に一つインデントさせます:
このように gv
は Visual モードで使われた p
もしくは P
によって置換する際に使用したテキストを再選択することもできます.
Visual モードで現在選択している範囲を前に選択した範囲に切り替える
Visual モードで現在選択中の範囲を gv
で前に選択した範囲に切り替えることもできます.
今までの二つの例が Normal モードでの gv
だったのに対して, 今度のは Visual モードでの gv
になります.
次の Ruby コードで:
6jVG
で foo
メソッドを Visual Line で選択してから:
y
でヤンクし:
2kV3k
で bar
メソッドを Visual Line で選択し:
p
で置換しようと思いますが, やっぱり foo
メソッドを切り取りたいと気が変わります.
そこで gv
すると foo
メソッドに選択範囲が移ります:
そして d
で foo
を切り取り:
kV3k
で bar
を再度選択してから, p
で, 今切り取った foo
で置換します:
gv
でたった今 p
で貼り付けた foo
を再度選択し, >
で右に一つインデントさせます:
このように Visual モードで現在選択中の範囲を, やっぱりさっき選択した範囲を選択し直したいと気が変わった時でも gv
を使うことができます.
まとめ
Vim は結構マニアックなテキストエディタなので, 扱う内容も自ずとマニアックになってしまうのですが, 今回はマニアックなテキストエディタのマニアックな gv
コマンドを紹介させていただきました.
マニアックの二乗といった感じで, それなりにマニアックな内容になってしまった感じもするのですが, 僕は Vim が好きなのでこんな感じの内容をちょくちょく紹介させていただければと思っております.
もしかしたらこのような内容でもある程度参考にしていただける方がおられるかもしれませんので.
関連記事
Ruby の正規表現を備忘録としてまとめてみた2018.08.30
Ruby の関数プログラミングでオイラー積を計算してみた2018.07.02
Git で変更されたファイルを部分的にステージする方法2018.11.01
Ruby のクラスやメソッドのドキュメントを見れる ri コマンドが便利な件2018.09.08
Vim プラグイン ri.vim で Ruby のドキュメントを Vim の中でも見れてしまう2018.09.13