LoginSignup
22

More than 5 years have passed since last update.

cartonでライブラリ管理してるperlプロジェクトでvimを良い感じにする

Last updated at Posted at 2012-12-04

Perlのプロジェクトでcartonを使っているとだいたい以下のようなディレクトリ構成になる。

project_root
├── local
│   └── lib
│       └── perl5
│              └── darwin-2level   # macの場合
└── lib

vimでperlを開くといろいろと良い感じにしてくれるが、多くの場合システムの @INC を使うため不都合を被る場面がでてくる。

thinca/vim-localrc

使うのは thinca/vim-localrc

project_rootに.local.vimrcを作ってそこに色々と書いていく

gfで正しいファイルに飛べない問題

vimはgfでカーソル以下にあるファイルに飛ぶ機能がある。perlを開いていればそのモジュールに飛ぶ。しかし @INC には入っていないので飛ぶことができない。

これを解決するのは .local.vimrc に下記のように書く。

.local.vimrc
set path=/path/to/project_root/lib,/path/to/project_root/local/lib/perl5,/path/to/project_root/local/lib/perl5/darwin-2level

確認

lib以下のpmファイルを適当に開いて

:set path?

を確認して .local.vimrc で設定した内容になっていればOK

これで

lib/Foo/Bar.pm
use Foo::^Baz;   # ^ にカーソルがある

この状態で gf と打てば project_root/lib/Foo/Baz.pm に画面が遷移する。cartonでインストールしたpmでも大丈夫

syntasticでライブラリが見つけられない問題

syntasticには use しているライブラリの存在確認機能があるが carton 内のやつを見つけられないので、保存のたびにエラーが出る。

これに対しては以下を追記する。 g:syntastic_perl_lib_path に関しては syntastic/syntax_chekers/perl.vimを参照

.local.vimrc
let g:syntastic_perl_lib_path = "/path/to/project_root/lib,/path/to/project_root/local/lib/perl5,/path/to/project_root/local/lib/perl5/darwin-2level"

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22