Vi/Vimは伝説的なテキストエディタの1つで、今でも上級者やプロのユーザーの武器として活躍しています。 Vim は特にプログラマーに人気があります。 すべてのLinuxディストロには、デフォルトでVimが含まれています。 もしあなたがLinux以外のシステムを使っていても、どのシステムからでもこの高品質なテキストエディタを楽しむことができるはずです。 Vim を入手してください。
なぜこの古いソフトウェアが今でも重要なのでしょうか。 それは、軽量で、ほとんどすべての関数のキーボード ショートカットがあり、式の検索が組み込まれていて、堅牢で安定した健全なプラグイン エコシステムがあるからです。 言うまでもなく、美しいシンタックスハイライトのような他の現代的なテキストエディタの機能もあります。 Vimがプログラマーの間で人気があるのは、Vimがキーボードフォーカスを強く要求するからだとわかります。
記事のタイトルが示すように、このガイドの目的は、Vim の検索と置換の機能をよりよく理解してもらうことです。 Vim は何も恐れることはありません。
まず最初に、デモ用のテキストが必要です。 Vim を学ぶ上で、最も安全な方法は、使い捨てのテキスト ファイルを作成して、それを使って好きなことをすることです。
私はLinuxシステムとしてManjaro Linuxを使用しています。 Manjaro Linuxのインストール方法をご紹介します。 これは Arch ベースのディストロで、デフォルトのパッケージマネージャとして pacman を使用しています。


さて、このテキストファイルをVimで起動してみましょう!

Vimの検索
Vimの検索には以下の構造を使用しています。
例えば、「python」を検索してみましょう。

デフォルトでは、検索は1つの固定された結果に着座します。
注意:以下のキーを使う前にEnterキーを押すのを忘れないでください。
n – 次の検索結果を表示する
N – 前の検索結果を表示する

ここまでが基本的な検索方法です。 もう少し強力な方法を試してみましょう。

ここです。
先ほどの例と同じように、検索結果をナビゲートするには、nまたはN(ケース依存)を使用します。
検索では、ワイルドカードの使用もサポートしています。

すべてのパッケージを検索するには、「python*」を使用できます。 ここで、アスタリスクは、「python」という接頭辞の後にあるものすべてを指示しています。 どんな検索でも、アスタリスクは検索語のどこにあっても構いません。 アスタリスクがどこにあっても、それは Vim にテキストファイル全体から可能な限りのデータでギャップを埋めるように指示します。

検索しているときのこと。 Vim は常にカーソルをマッチの開始文字に置きます。 これがデフォルトの動作です。 心配する必要はありません。Vim では、カーソル着地のデフォルト位置を変更することができます。

ここでは、最後の “e “が、一致するフレーズの最後にカーソルを置くように指示しています。 次の例のように、検索結果の下や上にカーソルを置くように指示することもできます。


検索マッチの開始/終了からカーソルをオフセットすることも可能です。 例えば、次のコマンドは、カーソルを先頭から3文字隣に着地させます。



ここでは。 “s “は先頭を、”+3 “は先頭から3文字を表しています。 “b “は “begin “の略です。 これも “s “と同様の機能です。
検索結果の最後からのオフセットに興味がある場合は、”e “を使います。

ここでは、テキストファイルで検索を行う別の素晴らしい方法を紹介します。

コマンドの詳細な説明は、次のセクションで行います。
Vim の 置換
検索と置換は、質の高いテキスト エディタにとって、もう 1 つの一般的で必須の機能です。 伝説的な存在である Vim は、シンプルな方法で目的のテキストを検索および置換する強固な方法を提供しています。 この機能のコマンドはシンプルですが、非常に複雑な作業を行うことができます。
各パーツを分解してみましょう。
- range – 「検索と置換」機能を実行する範囲を定義します。 2種類の値があります。
- % – ファイル全体に対して行う
- <start _line><end_line> – 特定の行のセットに対して動作を行うことができます。
- search_string – 置き換える必要のある文字列
- replace_string – 古い文字列を置き換える新しい文字列
- modifier – 置き換えの動作を決定します。 いくつかの異なる値があります。
- g – 「グローバル」オプション。
- gc – 各置換を行う前に確認を求めます。
- gn – 置換関数を無視し、見つかったものをハイライトします。
:%s/python/Python3/g
簡単でしょう? では、次のようなものをチェックしてみましょう。
:%s/python/Python3/gc選択できるアクションはいくつかあります。 慣れ親しんだものもあれば、そうでないものもあります。
- y – 変更の実行を許可する
- n – 変更の実行を許可しない
- a – すべてを置換する
- q – タスクを終了する
- l – この発生だけを置換する。
- ^E (Ctrl + E) – 画面を上にスクロールする
- ^Y (Ctrl + Y) – 画面を下にスクロールする
さて、今度は範囲指定の部分を試してみましょう。 前の例では、すでに「%」の範囲を使いました。 今度は、行数を絞って検索してみましょう。
:200,250 s/python/Python3/g検索は200行目から始まり、250行目で終了します。
この機能は、1つの検索語に限定されるものではありません。 複数の検索語を含めることができます!
:%s/<search_term_1><search_term_2><search_term_3>
/<replace_string>/gすべての「python」と「py」のエントリーを「Python3」に変更してみましょう。
:%s/python\|py/Python3/gとなります。
大文字小文字の区別
このガイドで説明されているすべてのトリックは、大文字小文字を区別します。 作業しているときはいつでも、文字を正しい大文字で入力していることを確認しなければなりません。
もし、大文字/小文字を覚えていない場合は、Vim に大文字/小文字を区別しないように指示してください!
/<search_term>\c
:%s/<search_term>\c/<replace_term>/gこの不感症は、vimrcファイルから直接有効にすることもできます。
set ignorecaseここにも興味深いオプションがあります。
set smartcase“ignorecase “を使うと、Vimは強制的に大文字小文字の区別を無視します。
注意: 「smartcase」を動作させるには、まず「ignorecase」が必要です。
最後に
Vim でできることはたくさんあります。 Vim は、あなたが必要とする究極のテキスト エディターのようなものです。
楽しんでください!
Vim は究極のテキスト エディターのようなもので、必要なのは忍耐と練習だけです。