zsh: suspended が出た時の対処法
vim でファイルを編集していると、どこかのキーを押してしまい突然
❯ vim zsh_suspend.md zsh: suspended vim zsh_suspend.md
の表示とともにコマンドラインに戻された。
結論
❯ fg
fg
コマンドを実行すると、元の vim のプロセスに戻れる。
何が起きていたのか?
ファイル編集中に Ctrl+z
を押した結果、vim のプロセスがsuspend(一時停止)状態になっていた
その証拠に、現在の端末に割り当てられたプロセスをjobs
コマンドで確認してみると、
❯ jobs [1] - suspended vim zsh_suspend.md
さっき突然消えてしまった、Vimのプロセスがあった!
この作業をフォアグラウンド(元の vim の編集画面)に戻すには、fg
コマンドを実行すればいい。
ちなみに、複数プロセスが動いている場合は、fg
コマンドに引数として%1
%2
などを渡せば、プロセスを指定できる。
❯ jobs [1] - suspended vim sample1.md [2] - suspended vim sample2.md ❯ fg %1 # sample1.mdの編集画面 ❯ fg %2 # sample2.mdの編集画面
※ bash の場合、fg 1
のように引数は数字のみでも可
参考記事
こちらの@kamyknさんの記事も読んでみてほしいです。
追記 (2022/03/26)
最初に偶然Ctrl-z
を押してしまった日から、2ヶ月が経ちました。
今となってはCtrl-z
なしでは生きていけません。
上の参考記事を読んでもらえればわかると思いますが、Ctrl-z
を使うことで、vim <=> ターミナル の行き来が格段にしやすくなります。
vimでテキスト編集 => ターミナルでGit操作 => vimに戻る
といった具合です。
vimに復帰する度にfg
とコマンド入力するのが面倒なので、Ctrl-z
にキーバインドを設定しています。
~/.zshrc
fancy-ctrl-z () { if [[ $#BUFFER -eq 0 ]]; then BUFFER="fg" zle accept-line else zle push-input zle clear-screen fi } zle -N fancy-ctrl-z bindkey '^Z' fancy-ctrl-z
Ctrl-z
のジョブサスペンド機能を使っていない方がいたら、ぜひ使ってみてほしいです!