とある TypePad エンジニアの開発環境『使ってます。vim と ack 。』
※本記事は、旧 Tech Talk Blog 内の 「とある TypePad エンジニアの開発環境『使ってます。vim と ack 。』 (http://www.sixapart.jp/techtalk/2006/08/typepad-dev-vim-ack.html) 」 で公開されていた記事を移転しました。
TypePad エンジニアの せきむら です。Development Environment Conference の参加申込みがトイレに行っている間に埋まってしまったようですので、腹いせに代わりに自分の開発環境の話の一部をご紹介します。
概略。開発環境は Linux のサーバで手元の ThinkPad から putty を使って login しています。 shell は bash 。screen を使って複数の仮想端末を操作しコードの編集は Vim を使っています。
screen
screen は最近のタブ付き terminal software を使っている場合は必要ないという人もいますが、セッションを保存できるところが一番の魅力です。「帰ろう」と思ったときに ThinkPad の蓋を閉じて Putty を複数起動したままPCをスリープ状態にしても大丈夫。次の日の朝「やるか」と Putty で login し screen -r すれば一気に昨日の記憶がよみがえります(ったく大げさな言い方ですね)。そして、絶賛するわりには .screenrc はシンプルです。scrollback を増やしているのと、status 表示はどこかから拝借したものです。
escape ^Z^Z
defscrollback 1024
hardstatus on
hardstatus alwayslastline
hardstatus string "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%{..G} %H %{..Y} %m/%d %C%a "
vim splitting windows
vim はあまり plugin を使っていません。急に他のホストで作業しなきゃいけなくなったときに plugin を置くのが面倒ですから。唯一使っていた minibufexpl.vim ですが、 buffer じゃなくて window を使う方法に戻りました。(window の使い方は :h user_08.txt で読むことができます。)
"デフォルトの最小 window 高さを0に
set winminheight=0
" Ctrl-J/K で上下のWindowへ移動
:nmap <C-J> <C-W>j<C-W>_
:nmap <C-K> <C-W>k<C-W>_
上記内容を ~/.vimrc に書き加えて複数のファイルを vim で表示したのがこの画像です。
上下に帯のように見えているのが minheight=0 な window たちです。Ctrl-J で上のwindowに移動したりしています。minibufexpl.vim の buffer の切り替えより早い気がするのでこっちを使っています。問題点はファイルを開きすぎると作業スペースが確保できなくなることですね。
ack
通常はコードを実際に書いている時間よりも、なんらかのエラーメッセージ等から問題箇所を探し出してコードを読むことに時間を費やしています。つまり素早く、的確に、問題箇所を見つけることが大事になります。debugger を使って処理内容を把握することや print debugging によって直接データを dump することも多いですが、該当箇所がどこなのか力技で grep することも少なくありません。ちょっと前まで subversion のソースに含まれている wcgrep を使っていましたが最近は ack を使うようになりました。ack は perl で書かれた grep 風のプログラムで CVS や svn 等でバージョン管理しているソースコードの検索に特化しているのが特徴です。
ack -i --group --color encode lib | lv -c
色がつくというのと、階層が深くてもファイル単位で検索結果がまとまるというのが見やすいです。ack の他のオプションを調べるために man ack とするとがっかりしますが、 ack --help でお望みのものを得ることができます。ちなみに lv -c で ANSI color が使えるのはこのエントリーを書いているときに気がつきました。
まとめ
今回はキモイと不評だけどplugin不要の vim window の使い方と、ack を使ったソースコードの検索の仕方をご紹介しました。もっといい方法など人それぞれ沢山あるとは思いますが、ひとつの例として参考にしていただければと思います。また、Development Environment Conferenceに参加できない寂しい思いを胸いっぱいに書いてみました。次回の募集申込みのときは時間ぎりぎりにトイレに行くのは我慢するようにします。
Six Apart をフォローしませんか?