概要
Vim使っている人なんかだとctrl+z
を押してシェルに戻る。シェル操作する。fg
でVimに戻るとかよくやると思います。私はある日、いつも通りVim上でctrl+z
を押しました。するとVimのジョブがバックグラウンドにならずに消えました。絶望です。
それから3日間位ずっとctrl+z
が効かない生活を送っていました。Vim上で全部やらずに適宜シェルも織り交ぜるエディタタイプの私にとってそれは地獄でした。なので同じ問題で地獄を味わっている人のためにメモを残します。
調査
結論を先に言えば原因はチョークールなzshプラグインマネージャzplugでした。調査の詳細を以下に記載します。
ctrl+z
でジョブがサスペンドするのはVimの機能だと思っていましたがそれは錯覚でした。実はシェルの機能だったのです。どおりでGoogle先生にvim ctrl+z bug
とか聞いても答えてくれないはずです。
ならばシェル側の問題のはずと思いbashを起動してからvim起動からのctrl+z
を実行しました。普通にvimはjobとしてバックグラウンドに残りました。朗報です。
ですが私はzsh使いです。bashでサスペンドできてもまだ問題は残ります。次に空の.zshrc
を用意してサスペンドしました。これも正常に動きました。
これで.zshrc
の設定が原因と分かりました。あとは適当にあたりを付けて怪しい設定をコメントアウトしていくだけです。結果zplugの読み込み時にのみこの現状が発生することがわかりました。
対応
調査の結果、以下のissueを見つけました。
https://github.com/zplug/zplug/issues/374
英語力がゴミカスな私はなんとか$ZPLUG_HOME/log/job.lock
を削除したら治ったという一文を見つけました。
$ZPLUG_HOME/log/job.lock
を削除したところ、無事にvimをサスペンドすることができました。
喜びのあまり私は数十回vimをサスペンドしましたとさ。おわり。