vimでcatalyst

catalystやってみたよ

こないだ初めてcatalystのアプリケーション作りました。

それと同時(か少し前)くらいにvimも使い込みたいなーと考えてまして、
せっかくなのでcatalystvimでコーディングしてみよう!
と思い立ちました。

現在のvimコーディング晒し

かなり試行錯誤しながら今のvim設定にしてます。
まだ不満はありますが、まあまあいい感じでコーディングできてるかなーということで、
現在はどんな感じでvimcatalystをコーディングしているかを晒してみます。
(というか逆に「もっといい方法あるよ!」とアドバイス頂きたいのです>< )
ちなみに基本macvim-kaoriyaを使っていますが、windows版でもほぼ同じことが可能だと思います。



vimrc

vimrcはこちらに置いてあります。
基本はacotieさんのvimrcから派生させてカスタマイズしてる感じです。
http://github.com/toritori0318/vim

vimプラグイン

ack.vim

vim上からackコマンドを実行する。

acp.vim

オートコンプリート。これは必須。

fuf.vim

あいまい検索。
たまにしか使ってないけどかなり便利。

NERD_commenter.vim

コメント処理。
visualモードで「c」しか使ってません。

NERD_tree.vim

いけてるファイルエクスプローラ。こいつも必須。
F3キーにマッピングしてます。

perl-support.vim

「shift+F1」のperldocを使いたいがために入れてます。
が、多分使い方間違ってるw
ものすごく機能多いです。

qbuf.vim

簡易バッファエクスプローラ
「minibufexpl.vim」→「bufexproler.vim」→「qbuf.vim
というルートで行き着きました。シンプルイズベスト。
デフォルトのF4キーにマッピングしてます。

taglist.vim

タグリスト表示プラグイン
たまに使う。
F5キーにマッピングしてます。

xml.vim

html書くときに便利らしい。

yanktmp.vim

異なる vim プロセスで yank/paste するプラグイン



その他前準備

.bash_profile

以下の一行を入れておくと幸せになれるかも

export PERL5LIB=$PERL5LIB:./lib
TT用filetypeを設定する

こちらを参考に設定。
http://d.hatena.ne.jp/Craftworks/20090611/1244705062

perl用辞書を作る

こちらを実行すれば一発で作成できます。
このスクリプトだと「~/.vim/dict/」ディレクトリが作成されている必要があります。
http://github.com/toritori0318/vim/blob/master/script/create_perldict.pl
ちなみに、cpanモジュールの辞書も作っておくと、オートコンプリートが効くので便利です。
これも以下のスクリプトで作成できます。*1
http://github.com/toritori0318/vim/blob/master/script/create_perlmodule.pl

tagファイルを作る

tagファイルを作っておくと、関数一覧が見れたり定義へジャンプできるので便利。
catalystアプリケーションのルートで以下のスクリプトを実行しましょう。
フルパスでcatalystアプリケーションを指定する必要があります。
http://github.com/toritori0318/vim/blob/master/script/ctags_app.sh

これもまたcpanモジュール用のタグを作っておくと便利です。
perlモジュールのパスは環境依存なので自分用に変更してください。
またこのスクリプトだと「~/.vim/tags/perl/」ディレクトリが作成されている必要があります。
http://github.com/toritori0318/vim/blob/master/script/ctags_cpan.sh



vim上での操作(NERDTree上)

1. F3でNERDTree立ち上げる。
 あらかじめcatalystアプリケーションのルートをブックマークしておく。*2
 次回以降はブックマークから移動する。*3
2. 基本、NERDTreeは立ち上げっぱなし。
「o」(開く)
「go」(プレビュー)
「t」(タブで開く)
などでファイルアクセス。
3. ファイル追加/移動/削除したい場合はNERDTree上で「m」コマンドから行う。
4. プロジェクト内検索をする場合は、検索したいディレクトリで「cd」移動してから
「:Ack 検索文字列」で検索実行。
5. ちょっと複雑なコマンド使うときは「cd」で移動して「:sh」でシェル起動

vim上での操作(通常ウィンドウ)

1. 「gf」でモジュールジャンプ。cpanでインストールしたモジュールにも飛べる。
元のモジュールに戻るときは「ctrl+o」など。*4
2. fuzzyfinderでバッファ/ファイル検索も。
単純なバッファリストはF4でqbuf起動。
3. 「ctrl+]」でタグジャンプ。F5でタグリスト表示

ターミナル上での操作

1. ターミナルでcatalystルートに移動
2. テストやコマンドラインインタフェースはターミナルから実行

コーディング

基本vimではガリガリ書くだけにして、
ターミナル上でテストとかコマンド実行とか。
なのでvimとターミナルを行き来しながらコーディングしてる感じです。



課題とか不満とか

vim上から別プロセスでシェルを起動したい

「:sh」でシェル起動しますが、vimと一体化してしまいますよね。
例えばNERDTree上で選択したディレクトリから
別なプロセスでターミナル起動とかしたいんですけど、これ出来ないのかな?
調べたけどわからなかった。

NERDTreeのメニューでtabキー補完したい

NERDTreeから「m」キーでファイル操作メニューが表示されますが、
この時にディレクトリとかをtabキーで補完出来ないのがかなり不便。
どうにかして補完したい。

タグファイルとPERL5LIBをアプリケーション毎に設定する必要あり

現状のやり方だと、tagファイルをフルパスで指定しておかないとうまく読み込んでくれないんですよね。
設定の方法でなんとかなりそうだけどやり方がわからない。

また、PERL5LIBにもcatalystのlibディレクトリをフルパスで指定しておかないと
catalystアプリケーション内のモジュールに対して「gf」のモジュールジャンプが効きません。

つまり
「tagファイルの指定」
「PERL5LIB」
catalystアプリケーション毎にフルパスで設定しないといけないということです。
まあこのくらいなら毎回設定でもいいんですが、スマートではありませんね。



気になる

このあたりとかすごく便利そうだけど使っていない。
http://d.hatena.ne.jp/spiritloose/20080217/1203245464



勘違いしていたこと

今回の記事書いてて気づきましたが、
gfのモジュールジャンプはタグファイルじゃなくて「@INC」を見ているようですね。
つまりgfだけで事足りてる人*5はPERL5LIBの設定だけでよさげ。



そんな感じで

まだまだvim修行中><

*1:新しいモジュールを追加する度に作り直す必要がありますが

*2::Bookmark コマンドから追加出来るよ!

*3:「B」でブックマークが表示されるよ!

*4:ctrl+o は、本来「元のカーソル位置に戻る」という機能です。進むのは ctrl+i

*5: