vim

エディタは基本的にvimを使っている。
JavaやC#を書く場合はEclipseなりVisualStudioなりを使うけれども、自分の業務の多くはLAMP環境によるウェブアプリで、その場合vimを使う。
GUIでなくCUIのvimで、手元のPCから端末ソフトでリモートのサーバにアクセスし、サーバ上でvimを起動して、ソースコードを編集している。
vimは多機能で操作が効率的だけれども、vimそのものというより、リモートサーバ上のファイルを直接編集(参照)出来る事が重要だと思っている。

ウェブアプリの開発環境はウェブサーバ・DBサーバ・開発言語とそのライブラリから成る。
本番環境と同様の環境を手元のPCに再現出来ればいいけれど、LAMP環境の場合、寄せ集め的にこれらの要素が構成されている事もあって、構築に手間が掛かり、バージョンを合わせたり、ファイルを本番と同期するように管理するのは難しい。
(特にDBのデータを手元のPCに持ってくるのはセキュリティ的にマズイ場合が多い。)
本番環境のあるサーバ上に開発環境を作るのが手っ取り早く、管理しやすい。

また、IDEを使って、ソースコードはローカルで編集し、それをFTP等でリモートに転送して開発する方法もあるだろうけれど、ウェブアプリ開発で編集(参照)の対象になるファイルはソースコードだけでなく、サーバの設定ファイルやログファイルもある。
このようなファイルはサーバ上で直接編集(参照)する事になる。
さらに、DBを操作するのにIDEやphpMyAdmin等のツールが使えればいいが、そのツールを使えるようにするのに時間がかかるし、セキュリティ等の理由で外部からアクセス出来ない場合もある。

以上のような理由で、端末上ですべての作業を集約すればさまざまなケースに対応出来、自分としては効率的に思える。
そこで端末上で動作をするエディタとしてvimを使っている。

GNU Screen

昔は端末ウィンドウを何枚も開いて作業していたけど、screenを導入して、その必要はなくなった。
自分が感じる一番のメリットは、しばらく作業を休んでる間にPCがスリープモードに入った場合、PCを復帰させるとネットワークが切れてるけれども、サーバに繋ぎ直した際に以前の状態に復帰出来る所。

縦のスプリットが出来る開発版があるけれど、あれは使ってない。スプリット機能自体ほとんど使ってなくて、たまにエディタと(psqlやmysqlといった)DB操作ツールの画面を見比べたい時だけ画面分割してる。

エスケープのキーバインドはCTRL+Sにしてある。
CTRL+Sは通常は端末のロックに割り当ててあるけれど、ロックする必要はないので、.bashrcの中でsttyで殺してある。
このキーバインドはscreenを使い始めた時に標準のCTRL+Aは行頭移動に使うので他にないか?と考えて思いついたんだけれど、これってベストプラクティスじゃないだろうか。

その他、変わった使い方はしてないけれど、shelltitleとbashのPROMPT_COMMANDを使って、ウィンドウタイトルが自動的にそのウィンドウで今いるワーキングディレクトリの一部になるようにしている。
ステータスラインは白とブルーにしてる。この色の組み合わせが好きだ。

screen