[Vim問題] カーソル行の文字列を手早く置換する方法は何種類?

この記事は約4分で読めます。

この記事では、Vim / neovim でプラグインを使わずに「カーソル行の文字を手早く置換する」ためのコマンドやキーバインドについて、ご紹介します。

スポンサーリンク

[解答] 4種類

主には次の四種類が考えられます。

  1. 置換モード
  2. 置換コマンド
  3. ビジュアルモード+オペレータ
  4. オペレータ+モーション/テキストオブジェクト

置換パターン1. 置換モード

(ノーマルモードで対象テキストに移動後 )
 R {変更後のテキスト}
置換モード
置換モード

該当箇所に移動した後、R キーで置換モードに移行して、変更後のテキストを上書きしていきます。

初心者Vimmerが恐らく最初に覚えるであろうキー操作です。

ただし、この方法は対象が同じ文字数のテキストの必要がある点が難点です。

これはテキストを上書きする置換モードの特性がゆえです。

そのため、次の段階では恐らくコチラを使います。

置換パターン2. 置換コマンド

(ノーマルモード)
:substitute/{置換前の単語}/{置換後の単語}/
または
:s/{置換前の単語}/{置換後の単語}/
置換コマンド
置換コマンド

他のエディタでもよく利用するであろう置換コマンドです。

テキストの置き換えですから、こちらも非常に直感的です。

オプションに g を指定すれば複数のテキストを一括置換できますし、c を指定すれば確認しながら慎重に置換することができます。

また、実行するタイミングでは別の行にカーソルがあったとしても実行することは可能です。

ただし、こちらはファイル全体で文字を置換したい場合には非常に強力な反面、一行での置換にはちょっとステップ数(キー入力数)が多すぎます。

別に悪くはないですが、もっと手軽に置換する方法はもっとあります。

そのため、もっと慣れてくると次のようにオペレータとモーションを組み合わせるようになります。

置換パターン3. ビジュアルモード

(ノーマルモードで対象テキストに移動後 )
v {範囲指定/移動} -> c     (行選択する場合)
または
Ctrl-v {範囲指定/移動} -> c  (短形選択する場合)
ビジュアルモード
ビジュアルモード

ビジュアルモードを覚えた上で、それにオペレータを組み合わせるようになるはずです。

つまり、範囲を指定してから変更する、という動作になるわけで直感的と言えます。

こちらも移動の仕方によっては、非常に手軽で直感的にテキスト置換を行うことができます。

しかし、繰り返し実行や範囲指定が面倒くさいのは事実です。

人によっては、ビジュアルモードで選択してから置換コマンドで置換する人もいるでしょう。

しかし、それぞれのデメリットを完全には打ち消すことができません。

そこで、初級~中級 Vimmer になると、次のキー操作を頻繁に活用するようになります。

置換パターン4. オペレータ+モーション/テキストオブジェクト

(ノーマルモードで対象テキストに移動後)
cw  (単語の頭文字にカーソルがある場合)
または
ciw  (単語の頭文字以外にカーソルがある場合)
オペレータ+テキストオブジェクト  ciw
オペレータ+テキストオブジェクト ciw

置換を示すオペレータ c の後、モーション w でカーソル下の単語を範囲指定するか、あるいはテキストオブジェクト iw でカーソルで選択中の単語を範囲指定します。

wiw の違いは、選択するときのカーソルの位置です。前者はカーソル位置から単語末尾の文字までを選択しますが、後者は単語のどこにカーソルがあってもその単語を選択します。

特に後者のテキストオブジェクトでの選択は、Vim ならでは非常に人気です。

移動は t や F などで手早く済ませ、このキー操作で置換してしまうというのが、よくある編集パターンと言えます。


なお、細かいことを言えば、置換コマンドやビジュアルモードだってやり方はいろいろあります。

しかし、Vimmer の間ではオペレータ+モーションが使えることがVimを選ぶ理由の1つになっているようです。

いずれの方法も覚えておくことに越したことはありませんが、特に置換パターン4は確実に練習して、自分のものにしましょう。

このVimコマンドの補足情報

  • 利用頻度5.0
  • 便利さ5.0
  • 覚え易さ3.0

関連するVimヘルプ

Vimからは、下記のコマンドでヘルプを確認できます。

:help R
:help visual.txt
:help substitute
:help motion
:help objects

ヘルプで検索するときは、通常は大文字小文字は識別されませんので、どちらでも構いません。

テキストオブジェクトやモーションを勉強できる参考書籍

テキストオブジェクトやモーションを詳しく勉強できるのは、こちらの書籍になります。

実践Vim 思考のスピードで編集しよう! (アスキー書籍)
古くて新しいUnixのエディタVim――このVimのエディタとしてのコア機能をマスターするた...

Vim/neovim関連の書籍で、もっとも評判が良い(気がする)書籍です。Vim基本動作に関するバイブルと読んでる人もいます。その高い評価は、Amazonのレビューを読んでも間違いありません。

 

Vimテクニックバイブル~作業効率をカイゼンする150の技
(概要)Vimは開発者やサーバ管理者だけでなく,幅広いユーザをカバーする強力な̌...

こちらもVim関連の書籍で評価が高い書籍です。Vimを実践で使うノウハウが詰まっていますので、Vimmerなら一読する価値アリです。

 

Vim script テクニックバイブル ~Vim使いの魔法の杖 | Vim scriptサポーターズ |本 | 通販 | Amazon
AmazonでVim scriptサポーターズのVim script テクニックバイブル ~Vim使いの魔法の杖。アマゾンならポイント還元本が多数。Vim scriptサポーターズ作品ほか、お急ぎ便対象商品は当日お届けも可能。またVim script テクニックバイブル ~Vim使いの魔法の杖もアマゾン配送商品なら通常...

Vim/neovim の設定ファイルやプラグインなど、Vim script に関するノウハウがいくつも詰まった一冊。Vim力を伸ばすなら、一度は読んでおくべきかも知れません。

タイトルとURLをコピーしました