【初心者向け】viでの文字列の検索方法を一通り

  • このエントリーをはてなブックマークに追加
  • Pocket

viで文字列を検索するには「/」を使用するのが一番多いだろう。コマンドモードでスラッシュを押して検索をするパターンだ。

他にもviでは、下から検索をすることもできるし、指定する場所へジャンプする機能などもある。

文字列検索がどこで使うのか?

Windowsのメモ帳やその他のテキストエディタに「文字列の検索」機能がそなわっているようにvimにも文字列の検索機能がそなわっている。

例えば「ソースコードのなかに特定の関数名が存在するかどうか?」などといった場合に役に立つ、扱うテキストの量が膨大になればなるほど「文字列の検索」は重宝するようになる。

いうなれば「砂漠のなかに落した米粒を探すような作業」となる。

人力では到底なしえないが、あなたの目の前にはコンピュータがある。コンピュータにおいて文字列操作、および検索は基本機能なので、単語、文字列をピンポイントでみつけだすことが出来る。

是非活用しよう。

vimで文字列検索

vimはノーマルモードの状態で「?」もしくは「/」が入力されると文字列を検索する状態になる。「/」はカーソルの現在地から下方向に「?」はカーソルの現在地から上方向に検索をかける。

試しに「/etc/fstab」ファイルを開いて「defaults」というキーワードを検索してみる。

上から順番に検索する「/」

/<文字列>

vi 検索

「/defaults」とすると上から順に検索が行われる。

下から検索を行う「?」

?<文字列>

vi 検索 ?

「?defaults」とすると下から検索が実行される。

対応する括弧に移動する「%」

検索かというと少々違うが、こちらも紹介しておこう。

% 対応する括弧に移動

括弧に合わせた状態で「%」を押すと対応した括弧まで移動してくれる。

かっこ 移動

かっこ

vimの場合、検索にマッチする文字列は、色がハイライトされるようになっている。また括弧の始まりで「%」を押すと括弧の終了部分まで移動してくれる。

次の検索キーワードへの移動

検索キーワードがハイライトされている状態で「n」もしくは「N」を押してみてほしい、それぞれ

n 順方向に次の検索結果へジャンプする

N 逆方向に前の検索結果へジャンプする

つまり/<文字列>で検索をかけている状態でnを押すと画面下へ検索がかかり、Nを押すと上へ検索がかかる。

?<文字列>を使用して検索をすると挙動が逆になる。Nを押すと画面下へ検索がかかり、nを押すと上へ検索がかかる。

実演しよう。「/」で上から検索をかけている場合は次のようになる。

search

ここで「n」を押すと次の検索結果に移動する。

n

「N」を押すと前の検索結果へ移動する。

search

「?」で検索をかけた場合、下から順に検索され「n」を押すと一つ上の検索結果へ移動「N」を押すと一つ下の検索結果へ移動する。つまり「/」と逆の動作をする。

特殊文字を検索したい場合

ノーマルモードにて「/<文字列>」とすれば検索が可能だがでは「/」自体を検索したい場合どうするのか?というと「/」のまえにエスケープ文字を設置してあげればよい。例えば

/\/usr\/bin

とすると

/usr/bin

が検索出来る。

実際にやってみると

/\/dev\/mapper\/centos-root

とすると以下のようになる。

エスケープ

複雑な検索をしてみる

正規表現に触れるとそれだけで一冊の本ができあがってしまうので、今回は正規表現を利用した「始まりと終り」の文字を指定した検索と複数の単語の検索を実行してみる。

「very magic」を使用する。vimの正規表現には少々方言的でなまりがあるのでvery magicを使用してなまりを吸収することにしよう。

使い方自体は難しくなく

/\v<正規表現>

最初の部分に「\v」を設置するだけで大丈夫だ。実際に使用してみよう。

ワイルドカードと同じ効能をさせる

「defaults」

という単語をさがしたい場合は単に

/defaults

defaults

でヒットする。

そこで正規表現を使用すると「def」ではじまり「lts」でおわる単語などを検索することができる。

/\vdef\w*lts

defaults2

となる。今回出現したみなれないものは

「\w」と「*」の混合だろう。

試しに

/\v\w

としてみると全ての文字列単語が検索対象になることがわかる。

char all

\wは文字であればなんでもヒットする。

*は直前の\w0回以上の繰り返しを意味する

つまりこの二つで一般的に言うワイルドカードとほぼ同じ効能がえられる。

ほか複数の単語を指定してみる。

/\v (defaults|xfs)

上のようにすると「defaults」「xfs」が選択される。

defaults xfs

「()」と「|」を使用している。比較的直感的になっているだろう。

:set ignorecase について

なお検索時には大文字と小文字を区別して検索がおこなわれる。もし検索結果を大文字小文字区別させたくないのならば

:set ignorecase

とコマンドモードからセットすると大文字小文字を区別しなくなる。

set ignorecase

まとめ

このページではviの検索機能についてまとめてお伝えした。

「/」と「n」だけで事足りる場合もあるが、覚えておいたほうが明らかに効率は上がっていく。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できます。

IT講師に興味はありませんか?

・「今までIT講師をやってきたが、更に多くの講義を行いたい」

・「エンジニアとしてやってきたが講師業に魅力を感じている」

・「講師として活躍するためにベースとなる知識を知りたい」

・「様々な分野や言語の講師にチャレンジしてみたい」


という方はぜひIT講師募集のページをご覧ください。


リナックスアカデミーでは「受講している方々にITを好きになってもらう」ことを目標に、同じ目標に向かって歩んで行ける講師の方を常に探しています。


システム開発やインフラ構築などのエンジニアリング経験を活かし、新入社員などの未経験者や経験の浅い初学者の方々に対してITトレーニングを行っていただくことになります。


テキストやカリキュラムは事前に用意されており、それらを元に講義を進めていくため、IT講師をはじめて実施する方でも安心してトレーニングを実施できます。


IT講師募集のページを見る

SNSでもご購読できます。

コメント

コメントを残す

*

未経験からの育成制度も充実
IT講師に興味はありませんか?

リナックスアカデミーでIT講師の積極募集を開始! 経験・未経験問わずご応募可能。育成制度で講師スキル向上も目指せます

IT講師に応募する