22
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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"
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
22
Help us understand the problem. What are the problem?