LoginSignup
7
3

More than 5 years have passed since last update.

zshのctrl+zでジョブのサスペンドが出来なかったときの対応

Posted at

概要

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をサスペンドしましたとさ。おわり。

7
3
0

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
7
3