この記事では、Vim / neovim でプラグインを使わずに「gn/gNキーによる検索」のキーバインドについて、ご紹介します。
[解答] 前回検索したキーワードを変更する
こちらの動画を見ていただければ、詳しい動作が分かると思います。
最初にキーワード “url” で検索した後、他の場所へ移動します。
その後、やっぱり前回検索したキーワード “url” を変更(置換)したくなって、cgn と打って直接変更に入っています。
この動作によって省略できるのは、検索 もしくは 移動した後の c キーでの変更です。数ステップは稼げる強力なキーバインドと言えるでしょう。
Vimキーバインド1. 前回の検索キーワードで前方検索して変更する
(ノーマルモード)
cgn
変更のオペレータ c と前方検索&ビジュアル選択するモーション gn の組み合わせです。
あくまで以前に検索を実行していないと動作しませんので、ご注意ください。
Vimキーバインド2. 前回の検索キーワードで後方検索して変更する
(ノーマルモード)
cgN
変更のオペレータ c と後方検索&ビジュアル選択するモーション gn の組み合わせです。
ポイント
この操作の素晴らしいところは、ドットコマンド(.)で繰り返し可能な点です。
動画では二回 cgn を実行しましたが、実は2回目以降は . を繰り返すだけで良かったのです。
このようにオペレータ+モーションで扱えれば、わざわざマクロに記録しなくても簡単に利用することが可能になります。
gn / gN 単体だと使いどころが少ないと思いますが、このようなメリットを知ってしまえば使いどころが多くて便利だとわかるでしょう。
ぜひ身につけてしまいましょう!
このVimコマンドの補足情報
- 利用頻度
- 便利さ
- 覚え易さ
関連するVimヘルプ
Vim のヘルプでは下記のように解説されています。
gn 最後に使われた検索パターンを前方検索し (n のように)、
マッチしたものを選択してビジュアルモードを開始する。
カーソルがマッチの上にあるときは、それをビジュアル選択
する。
オペレータ待ちのときは、マッチに対してオペレータを実行
する。例: “dgn” は次のマッチを削除する。
すでにビジュアルモードなら、次のマッチの末尾まで選択範
囲を拡大する。
‘wrapscan’ が適用される。
Note: n とは異なり、検索方向は前の検索コマンドには依
存しない。gN v_gN
visual – Vim日本語ドキュメント
gN gn と同じだが、後方検索する (N のように)。
こちらは、Vim上では下記のコマンドでヘルプを確認できます。
:help gn :help gN
ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。
Vimテクニックを学習する
今回紹介したテクニックが記載された書籍は下記です。
Vim/neovim関連の書籍で、もっとも評判が良くてバイブルと呼んでる人もいる一冊です。Vim/neovimのバージョンに依存しない沢山のTips形式で、その表題通りに「思考のスピードで編集」できるようになるノウハウが詰まっています。その高い評価は Amazon のレビューからも分かる通りです。Vimmer なら必ず一度は読んでおいて間違いありません。
こちらもVim関連の書籍で評価が高い書籍の一冊です。vim-jpで見かける上級Vimmer(Vimサポーターズ)の皆様による、Vimを実践で使ったノウハウからプラグイン関連の情報が詰まっています。日本の Vim界隈を知る上でも是非一読しておきたい一冊です。
Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊です。日本で Vim Script をここまで深く解説している唯一の書籍と言えます。Vim力を伸ばしたいと考えるなら、絶対に避けては通れない書籍でしょう。