vimでcatalyst
catalystやってみたよ
こないだ初めてcatalystのアプリケーション作りました。
それと同時(か少し前)くらいにvimも使い込みたいなーと考えてまして、
せっかくなのでcatalystをvimでコーディングしてみよう!
と思い立ちました。
現在のvimコーディング晒し
かなり試行錯誤しながら今のvim設定にしてます。
まだ不満はありますが、まあまあいい感じでコーディングできてるかなーということで、
現在はどんな感じでvimでcatalystをコーディングしているかを晒してみます。
(というか逆に「もっといい方法あるよ!」とアドバイス頂きたいのです>< )
ちなみに基本macvim-kaoriyaを使っていますが、windows版でもほぼ同じことが可能だと思います。
vimrc
vimrcはこちらに置いてあります。
基本はacotieさんのvimrcから派生させてカスタマイズしてる感じです。
http://github.com/toritori0318/vim
vimプラグイン
acp.vim
オートコンプリート。これは必須。
fuf.vim
あいまい検索。
たまにしか使ってないけどかなり便利。
その他前準備
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でタグリスト表示
課題とか不満とか
vim上から別プロセスでシェルを起動したい
「:sh」でシェル起動しますが、vimと一体化してしまいますよね。
例えばNERDTree上で選択したディレクトリから
別なプロセスでターミナル起動とかしたいんですけど、これ出来ないのかな?
調べたけどわからなかった。
NERDTreeのメニューでtabキー補完したい
NERDTreeから「m」キーでファイル操作メニューが表示されますが、
この時にディレクトリとかをtabキーで補完出来ないのがかなり不便。
どうにかして補完したい。
タグファイルとPERL5LIBをアプリケーション毎に設定する必要あり
現状のやり方だと、tagファイルをフルパスで指定しておかないとうまく読み込んでくれないんですよね。
設定の方法でなんとかなりそうだけどやり方がわからない。
また、PERL5LIBにもcatalystのlibディレクトリをフルパスで指定しておかないと
catalystアプリケーション内のモジュールに対して「gf」のモジュールジャンプが効きません。
つまり
「tagファイルの指定」
「PERL5LIB」
はcatalystアプリケーション毎にフルパスで設定しないといけないということです。
まあこのくらいなら毎回設定でもいいんですが、スマートではありませんね。
勘違いしていたこと
今回の記事書いてて気づきましたが、
gfのモジュールジャンプはタグファイルじゃなくて「@INC」を見ているようですね。
つまりgfだけで事足りてる人*5はPERL5LIBの設定だけでよさげ。
そんな感じで
まだまだvim修行中><