Windows+PHP+Vdebug ブレイクポイントで止まらない
Vimを使う者として、IDE(統合開発環境)に負けたくないという気持ちはある。
だが、さすがにログや画面にvar_dump()し続けることに疲れてきてしまった。
ということで、vdebug(ステップ実行できるVimプラグイン)を使うことにした。
環境:
Windows10
Docker
PHP7
Xdebug
Gvim(Kaoriya)
・vdebugの設定
let g:vdebug_options['path_maps'] = {"/var/www/html": "C:/Users/me/my_project/html"}
バックスラッシュで「C:\Users\me\my_project\html」と指定すると、動かない。
「C:/Users/me/my_project/html」通常スラッシュにすると、動く。
しかし、なぜかブレイクポイントで止まらない。ブレイクポイントを設定しても無視される。なぜ?
PHPStormだと、正常にブレイクポイントで止まる。でもvdebugだと止まらない。このままだと…IDEに負けてしまう!?
Xdebugのログを比べてみた。
(一部略)
・PHPStorm
breakpoint_set -f file:///var/www/html/index.php
・vdebug
breakpoint_set -f "file:///C:\Users\me\my_project\html\index.php"
ファイルの指定部分がローカルになっている…?
仕方なく、プラグインのソースを追ってみる。
うっ、Pythonで書かれてる…勉強せねば…。
・変数
remote : file:///var/www/html
local : C:/Users/me/my_project/html
filename : C:\Users\me\my_project\html\index.php
filename = filename.replace(local, remote)
どうも、/ と \ の違いが原因で、置換が上手くいってないっぽい。
/vdebug/python3/vdebug/util.py
def _create_remote(f):
ret = f
ret = ret.replace('\\', '/') ← 追加
これで、正常に置換できて、ブレイクポイントでも止まるようになった。
今日一日が無駄にならず済みました。
これからは「Vimでもステップ実行できる」と胸張って言えるぞ~。