前回に続き、Vimが備えるプログラマ向けの便利な機能を紹介します。今回の内容をマスターすれば、プログラミングに関する操作のほとんどをVimから出せるようになります。(編集部)
ある程度Vimが使えるようになっても、マニュアルは別のターミナルで開いてしまうとか、ビルドや実行は別のターミナルから実行するといった癖を持っている方は少なくないだろう。操作法には好みがあるので、どれが良い、どれが悪いということはないが、Vimを使っているのであれば、なるべくVimですべての作業を完結させるようにしてしまいたい。その方が確実に作業効率は上がる。
先月からシステムコールの連載が始まっているということもあるので、しばらくはVimでC言語プログラミングをするという状況を想定した使い方を紹介していこうと思う。
C言語でプログラムを作るとき、プログラマはいくつかの決まった操作以外はほとんどしないということが多い。例えば、使いたいと考えている関数のマニュアルが読む、ヘッダファイルに指定されているファイルの中身を読む、特定の型や関数を定義している部分を読むなどといったところだろう。
これはC言語に限らないことだが、結局のところプログラミングとは、マニュアルやソースコードを読みながら自分の求める処理を記述していく作業といえる。このような作業のために、別のターミナルを開くのは少々効率が悪い。
大きなスクリーンをデュアル構成で使っているなど、デスクトップが十分に広い環境があるならそうした方が便利だ。tmux(1)やscreen(1)といった疑似ターミナルソフトウェアを利用すれば、ショートカットで複数のターミナルの間を行き来できるし、そういった操作が簡単にできるターミナルアプリケーションもある。
これが、画面が狭く解像度が低いノートPCなどになると話が変わる。こういう場合は、限られたスペースをいかに有効活用するかが効率アップのポイントとなる。今回は、狭い画面を想定して、プログラミング中に必要な指示をVimから出す方法を紹介する。なお、作業環境は前回構築したPC-BSDやUbuntuが仮想環境で動作していることを想定する。
基本的な操作方法から解説しよう。1つ目は、カーソルの下にある単語を検索キーワードにしてマニュアルを引く方法を覚えておきたい。いちいち別のターミナルへフォーカスを移動させてからman(1)コマンドを実行するようなことは避けたい。
作業用にCのソースコードをコピーしてVimで開いてみよう。例えばcat(1)のソースコードをカレントディレクトリへコピーして次のようにVimを実行する。
cp /usr/src/bin/cat/cat.c ./ vim cat.c
調べたい単語までカーソルを移動させたら、ノーマルモードにして[Shift]キーを押しながら「k」キーを押す(図1)。
こうすると、その対象となる単語を引数としてman(1)コマンドを実行でき、結果がターミナルに現れる(図2)。マニュアルの画面はノーマルモードで「:q」とすれば終了する。これは何かと便利なので、まず覚えてしまいたい。
UNIXのオンラインマニュアルをよく見ると、見出しが同じ単語になっているマニュアルが存在する。例えば、ライブラリ関数のgetopt(3)を調べたいと思って検索しても期待通りの結果にならないことがある(図3)。
[Shift]キー+「k」キーで検索すると、マニュアルの先頭から検索して、一致するマニュアルを表示するので、どうしても一般コマンドがヒットしやすくなる。先のgetoptの例なら、一般コマンドのgetopt(1)のマニュアルが出てきてしまうということがあるのだ(図4)。
FreeBSD/PC-BSDのマニュアルは、表1に示すセクション番号で分類してある。getopt(1)やgetopt(3)のような表記になるのは、どのセクションに所属しているのかを示しているのだ。この番号がないとコマンドの話をしているのか、ライブラリ関数の話をしているのか分からなくなってしまうので、UNIX系のドキュメントでは文脈から意味がはっきりしている場合を除いて、セクション番号付きで表記するのが普通だ。
セクション番号 | 内容 |
---|---|
1 | 一般コマンドマニュアル |
2 | システムコールマニュアル |
3 | ライブラリ関数マニュアル |
4 | カーネルインターフェイス |
5 | ファイルフォーマットマニュアル |
6 | ゲームマニュアル |
7 | そのほかのマニュアル |
8 | システム管理者向けマニュアル |
9 | カーネル開発者向けマニュアル |
表1 FreeBSD/PC-BSDのマニュアルのセクション番号と、それぞれの内容 |
先ほどの例は、ライブラリ関数のgetopt(3)について調べたいという場面だった。こういう時はgetoptの上にカーソルを移動させ、「3」と押してから、[Shift]キーを押しながら「k」を押すのだ。これで図5のようにgetopt(3)のマニュアルを読める。
プログラミングをしていれば、関数のマニュアルは何度も読むことになるだろう。プログラマなら、この短縮キーは絶対に覚えておきたい。この方法はC言語に限らず、シェルスクリプトのプログラミングでも利用できる。別ターミナルでコマンドのマニュアルを調べる必要がなく、Vimから直接マニュアルを参照できるのだ。
Copyright © ITmedia, Inc. All Rights Reserved.