プログラムを書くのに便利な機能!
マルチウインドー機能を使おう
今回はプログラムを書く時に便利な機能をいくつか紹介していく。
「第2回:Vimの基本操作をマスターしよう(http://www.thinkit.co.jp/article/123/2/)」で紹介したヘルプ画面は、現在編集しているファイル画面を分割して表示される。Vimではヘルプ画面以外の画面についても自分の好きなように分割可能だ。
新しくウインドーを作るには、「Ctrl-W n」(「Ctrl-W」を押してから「n」を押す)または「:new」と入力する。後者の場合は「:new foo.txt」のようにファイル名を指定することができる。なお、以降については「Ctrl-W n」系の操作を中心に進めていく。
上記のコマンドを実行すると、画面が横2つに分割され、いままで編集していたファイルの上に空のウインドーができる。このウインドーに移動するには「Ctrl-W Ctrl-W」と入力する。これを入力するたびに、カレントウインドーが移動する。
さて、ここでもう1つウインドーを作ってみよう。もう一度「Ctrl-W n」だ。これでウインドーが3つになったはずだ。
カレントウインドーが下のウインドーの時に新しいウインドーを作った場合は、真ん中に新しいウインドーができる。カレントウインドーが上のウインドーの時は、一番上が新しいウインドーになる。つまり「Ctrl-W n」で、カレントウインドーの1つ上に、新しいウインドーが作られる(カレントウインドーが一番上の時は、カレントウインドーの1つ下に作られる)。
この3つのウインドーは、先ほどと同様に「Ctrl-W Ctrl-W」で移動できるが、この方式だと1つずつ「下のウインドー」に移動するため、ウインドーの数が増えるとややまどろっこしい。
そこで上のウインドーに移動したい時は「Ctrl-W k」と入力、下のウインドーに移動したい時は「Ctrl-W j」を入力する。これは「Ctrl-W Ctrl-W」と動作は同じだが、一番下のウインドーで実行した場合だけ違いがあり、「Ctrl-W Ctrl-W」の場合は一番上のウインドーに移動するのに対し(リングバッファ的な挙動)、「Ctrl-W j」の場合はあくまでも「下」のウインドーに移動する機能なので、そこから移動できなくなる。
ウインドーの並び順を変更することも可能だ。「Ctrl-W x」を入力すると、カレントウインドーが1つ下のウインドーと入れ替わり(eXchange)、同時にカレントウインドーがその入れ替わったウインドーになる。言葉で説明されるとわかりにくいかもしれないが、実際に試してみればすぐにわかるだろう。
続いて「Ctrl-W r」と「Ctrl-W R」を説明する。前者は、ウインドー配置を「時計周り」に回転(rotate)し、後者は「反時計周り」に回転する。この場合、カレントウインドーは変更されない。
また「Ctrl-W K」と「Ctrl-W J」を入力すると、前者がカレントウインドーを一番上に移動、後者が同じく一番下に移動する。
サイズ変更と分割
並び順が変更できたら、次はサイズを変更できるようになろう。「Ctrl-W n」を入力すると、すべてのウインドーのサイズが同じになる。
いま入力をしているカレントウインドーのみを最大化したい時は、「Ctrl-W _」(または「:resize」)。もっと細かくサイズ変更をしたい場合は、「Ctrl-W +」(「:resize +1」)または「Ctrl-W -」(「:resize -1」)でウインドーサイズを増減したり、「Ctrl-W =」で全ウインドーのサイズを同じ大きさにしたりできる。
なお「20 Ctrl-W +」(「:resize +20」)で分ウインドーが大きくなり、「7 Ctrl-W -」(「:resize -7」)の場合は7行分ウインドーが小さくなる。
もちろん各ウインドー間でのコピー&ペーストもできる。例えば「Ctrl-W t」で一番上のウインドーに移動し、データをコピーした後、「Ctrl-W b」で一番下のウインドーに移動してその内容をペーストするといった使い方ができる。
ちなみに、このマルチウインドーは同じファイルを分割することもできる。「Ctrl-W s」(「:split」)で1つのファイルを2つに分割する。例えば、ファイルの先頭の方にある変数の定義を参照しながら、プログラムを書くというように使える。
また例えば、入力場所を移動せずファイル内の文字列を検索したい時には、「Ctrl-W s」で新しいウインドーを作成し、その新しいウインドーの方で検索する、といった使い方ができる
さらに、ウインドーは縦分割にも対応している。「Ctrl-W n」の縦バージョンが「:vnew」で、「Ctrl-W s」の縦バージョンが「Ctrl-W v」(または「:vsplit」)である。
開いたウインドー閉じる時は「:q」を入力する。これはヘルプを閉じる時と同様だ。ウインドーが複数ある場合は、カレントウインドーのみが閉じられる。逆にカレントウインドーのみを残して、ほかウインドーを閉じたい場合は、「Ctrl-W o」とする。