前回までは、ユーザー自身のPCでVimを使うことを前提にして、解説を進めてきました。今回は、sshでサーバにログインし、そのサーバ上でVimを使うことを考えた設定ポイントを解説します(編集部)
アプリケーション開発に使うメインエディタをVimと決めている開発者は、今でも少なくない。PCが十分な処理能力を持つようになり、EclipseやVisual Studioなどの統合開発環境(IDE:Integrated Development Environment)の機能が充実し、数々の便利な機能を備えるようになった。
しかしIDEを便利に活用できる環境が整っている今でも、メモリをあまり消費せず、軽快に動くVimは、開発者の支持を集めている。自分の好きなように自由にカスタマイズできる柔軟さを評価している開発者も多い。Vimを使う多くの開発者は、より便利に使う方法を模索し続けているのだ。
特に、実際に動作しているサーバにsshでログインして、サーバ上にあるプログラムファイルを直接編集するような開発スタイルには、Vimが適している。Javaのようにコンパイルが必要になるプログラミング言語やGUI(Graphical User Interface)を設計するツールが必要になるようなときは、統合開発環境を使った方が便利だが、PHPやPythonなどのスクリプト言語のプログラムを開発しているなら、サーバにログインして、サーバ上で作業した方が何かと便利だ。
sshでログインして、サーバ上で作業するなら、エディタは軽量な方が良い。しかし、複雑な処理を簡単に済ませるには多くの機能も必要になる。Vimはその両方の要求を満たすエディタだ。今回はsshでサーバにログインして、サーバ上で起動したVimを操作する場面で便利に使える操作法を紹介する。
sshでサーバにログインして、サーバ上でVimを起動してソースコードやHTMLファイル、CSSファイルなどを編集するときは、編集するファイルが1つで済むことはあまりない。複数のファイルを同時に開いて、Vim上で表示するファイルを切り替えながら作業した方が都合が良い。
例えば、プログラム中ですでに使用済みとなっている関数名や変数名を調べるときや、ソースコードをコピーして、ほかのファイルに貼り付けるときなどは、複数のファイルを同時に開いている方が便利だ。複数のファイルを編集するには、編集するファイルをすべて指定してVimを起動すればよい。「Vim *.php」のように、ワイルドカードを使うのもよいだろう。
自分のPC上で作業するなら、ターミナルアプリケーションをいくつも起動して、それぞれでVimを起動してファイルを開くといったこともできるが、sshでサーバにログインしているときは、そういうことはしないのが普通だ。
Vimを1つだけ起動して、そのVimで複数のファイルを開き、ファイルの間を行き来しながら作業を進める。こういうときにタイルウィンドウやタブを活用する方法は連載第4回で解説した。今回は、小型ノートPCなど画面が小さいPCからの作業を想定して、タイルウィンドウで画面を分割することなく作業することを前提に解説を進める。
複数のファイルを開いたときは「:bn」で表示するファイルを切り替えることができる。表示するファイルを切り替える方法はほかにもあるが、まずはこの方法を覚えておけばよいだろう。
表示するファイルを切り替えながらファイルを編集するようなときは、ファイルを頻繁に切り替えることになるので、ショートカットキーに割り当てておくとよい。例えば[Ctrl]を押しながら[n]を押すことで、表示するファイルを順に切り替えられるようにしてみよう。次に挙げる4行を~/.vimrcなどに書き込んでおけばよい。
nmap :update:bn imap :update:bn vmap :update:bn cmap :update:bn
:bnで表示するファイルを切り替えるには、その前に編集中のファイル(バッファ)を保存する必要がある。そのため、上に挙げた設定では、ファイルを切り替える前に「:update」でファイルを保存し、:bnで次のファイルへ移動するようにしている。この設定を有効にすると、[Ctrl]+[n]で、順々に表示するファイルを切り替えられるようになる。
表示するファイルを順々に切り替えるという方法は、同時に開く編集対象のファイルがあまり多くないうちは便利に使える。しかし、同時に100以上のファイルを開いて編集するという話になると、表示するファイルを順々に切り替えていては、目的のファイルを表示させるまでに何十回とキーを押さなければならない。このようなときは、ファイル切り替えを便利にするプラグインを導入するという方法を考えた方が良いだろう。
しかし、同時に開くファイルがあまりにも増えるということは、プログラムを適切に整理できていない可能性もある。適切に整理して、ファイルの数を減らすことができるなら、その方が良い。
開いたファイルを閉じるには「:bd」または「:bdelete」だ。どちらを実行しても同じ結果になる。:bdを実行すると、その時点で表示しているファイル(カレントバッファ)がメモリ上から消え、そのファイルがバッファリスト(同時に開いているファイルのリスト)からも消える。
:bnでの移動効率を良くするために、開いておく必要がなくなったファイルは:bdで閉じ、必要なファイルだけを開くようにしておきたい。こうしておけば、:bnでファイルを切り替えながらの作業でも、十分に効率良くできる。複数のファイルを同時に開いた作業では、ファイルを閉じることも多くなる。効率を上げるために、ショートカットキーを設定するとよいだろう。例えば、次のような設定を~/.vimrcなどに追加するとよい。
nmap :update:bd imap :update:bd vmap :update:bd cmap :update:bd
これで[Ctrl]+[w]で現在開いているファイル(カレントバッファ)を閉じられるようになる。さらに、先に挙げた例と同じように、ファイルを閉じる前に、「:update」でファイルを保存するようにしてある。
複数のファイルを開いて作業しているときは、あるファイルのデータを別のファイルにコピー&ペーストするという操作が多く発生する。この場合、Vimを有効活用できていない人は、自分のPC上でエディタを起動しておき、ターミナルのVimに表示されているテキストをPCのクリップボードへコピーし、念のためにエディタに貼り付けた後で、ターミナルのVimで:bnを何度も実行して、貼り付けたいファイルに表示を切り替え、やっとデータを貼り付けるという具合に回りくどい作業をすることになる。
こんな回りくどいことをしなくても、Vimには「ヤンク」という機能がある。Vimが持つコピー機能だ。ビジュアルモードで、テキスト上のコピーしたい部分を選択して[y]を押すと、選択した部分をコピーしたことになる。後は、コピーしたいファイルに表示を切り替えて、そこで[p]あるいは[P]を押せばよい。これでコピーしたデータのペーストができる。ファイルをまたぐコピー&ペーストがVim内で完結するので便利だ。
Copyright © ITmedia, Inc. All Rights Reserved.