Vimの基本操作をマスターしよう

2008年8月19日(火)
萩原 佳明

入力方式と検索

 挿入モードに入るとき、「i」を入力するとその場から入力することになり、「a」を入力すると次の文字から入力できるようになる。つまり、前者は「insert」で後者は「append」の意味だ。

 ほかにも、次の行から入力できるようになる「o」、前の行から入力できるようになる「O」もある。

 「この行をやりなおしたい」という場合は「S」で現在入力している行が先頭から削除され、挿入モードに入る。「C」だと現在カーソルがある位置以降が削除され、挿入モードに入る。

 また「3cw」とやると、「3単語を消してから挿入モードに」という動きになる。「w」は移動のときに出てきた「w」だ。このように組み合わせて操作できる。僕がよく使うのは、数字プレフィックスなしの「cw」で、「その単語変更」ができる。

 文字列を検索したいときは、/に続けて文字列を入力する。検索文字列の確定はEnterキーだ。ちなみにこの文字列検索は正規表現も使える。例えば「/[^;]$」で「;」で終わってない行末を検索する。検索後、「n」で次のヒット位置に、「p」で前のヒット位置に移動できる。

 置換したいときは、例えばファイル全体が対象ならば「:%s/foo/bar/g」のようにする。「%」が「ファイル全体」、「s」が置換という意味だ。置換の「g」オプションは「1行の中にあるすべての対象を置換」ということ。

 「置換したいのは一部だけ」という場合は、「V」で行単位のビジュアルモードに入って置換対象を選択したあと、「:s」と入力すれば良い。自動的に「:'s」とコマンドラインに表示され、「行単位ビジュアルモードでの選択範囲」が操作対象になる(もちろん置換以外でもこのやり方は有効)。なお、「:%s/foo/bar/gc」のように「c」オプションを付ければ、置換対象ごとに本当に置換するかどうか確認する。

 ほかにも「t」を使った簡易的な文字検索もできる。例えば「ta」で、その行にあるカーソルの「次のa」の前にカーソルが移動する(「T」で逆方向に検索。ちなみにVimでは、こういう風に大文字にするとちょっと意味が変わるものが多い)。また「次のa」ではなく「2個目のa」を検索する場合は、「2ta」と入力すれば良い。

 もう1つ、よく使うのが「*」と「#」による検索で、これは「カーソルがある位置の単語を検索」という機能。「*」でファイル後方に向かって検索、「#」で同じく前方に向かって検索する。

 「いまここにあるこの文字を置換したい」という場合はノーマルモードで「r」。そうすると一時的に置換モードに入るので、置換したい文字を入力する。すると文字が置き替わる。例えば「bar」の「b」の上で「r」を押して置換モードに入り、「f」を押すと「b」が「f」に置換されたあとノーマルモードに戻る(最終的に「far」になる)。一時的じゃなく置換モードに入りたいときは「R」だ。これで、カーソルの下の文字が置換されていく。

 大文字と小文字の切り替えを行いたいときは「~」を使う。例えば「abCDEfgHiJKl」とある行の「a」の上にカーソルを持って行った上で「~」を押していくと、「ABcdeFGhIjkL」と変換されていくわけだ。一気にやりたい場合はビジュアルモードで対象となる文字列を選択後に「~」を入力。なお、ビジュアルモードで選択後に「U」を押すと、全部大文字になる。ただノーマルモードで「U」を入力すると、「その行に対して行った操作をアンドゥー」という、「u」の親類のような結果になるのでご注意を。

 さて、続いては、図1のような素敵な変換ができる「レコーディング機能」について紹介する。

レコーディング機能

 そして今回紹介する最後の機能が「レコーディング機能」。ノーマルモードで「qa」としてみよう。画面下に「記録中」と表示されるはずだ。これで以降行う操作はすべて記録され、再生して同じ操作を繰り返し使えるようになる。レコーディング中に再度「q」を押すとレコーディングを終了する。「@a」でいま記録したものを再生できる(ちなみにここに出てくる「a」はレジスタという記録対象のことで「qb」「qZ」「q8」なども使えて、それぞれ「@b」「@Z」「@8」で再生できる)。

 さて、このときうれしいのが「e」や「$」などの「抽象的な意味」を持つ機能が使えること。つまり「2文字右に行って3文字カットしてそれを次の行にペースト」のような操作や、「行頭まで移動したら2単語分右に移動して行末までをカットして次の行のスペースの前にペースト」というような操作が記録できる。

 ある文字列を別の文字列に法則的に変換するための操作を図3にまとめた。字面で追ってると複雑に見えるかもしれないが、慣れればあまり考えずにできるようになるはずだ。

 今回はヘルプと設定ファイル、基本操作について紹介した。次回はもう少しターゲットをしぼって、プログラムを書くときに便利な機能を紹介する予定だ。よろしくどうぞ。

1973年佐賀県生まれ。東京大学文科I類中退。株式会社アスキーで3年半ほど編集者生活を送った後に独立し、(有)プラスワンデジタルを設立。Webサイトの企画・運営やサーバ管理、プログラム作成などを担当。著書に「日本のSEはこれからどうなるのか」「これならわかる不正アクセス対策 入門の入門」(いずれも翔泳社)がある。http://www.p1d.com/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています