web-dev-qa-db-ja.com

macOSでターミナルを閉じた後、Vimプロセスにアクセスするにはどうすればよいですか?

これは、psコマンドを実行したときに得られるものです。

$ ps
  PID TTY           TIME CMD
14777 ttys000    0:00.25 -bash
19716 ttys000    0:00.15 vi templates/base.html
 8240 ttys001    0:00.11 -bash
 8284 ttys002    0:00.04 -bash
14832 ttys004    0:00.06 -bash
17504 ttys004    0:00.15 python ./app.py
17505 ttys004    1:05.52 /Users/Utka/virtualenv/bin/python ./app.py
19732 ttys005    0:00.02 /Applications/iTerm.app/Contents/MacOS/iTerm2 --server login -fp MrDifferent
19734 ttys005    0:00.01 -bash

MacでCmd + Wを押して、誤ってターミナルを閉じてしまいました。ターミナルを再度開くと、psリストに表示されます。作業を再開したいと思います。

Vimプロセス(19716)を再アクティブ化して編集したい。その特定のvimプロセスを再開するには、どのコマンドを実行する必要がありますか?

2

base.htmlが配置されているディレクトリに戻り、.base.html.swpという名前のファイルを探します。存在する場合は、vi -r base.htmlを実行して、ファイルの最後の状態を回復できるはずです。

$ ls -a | grep base
base.html
.base.html.swp
$ kill 19716 #your vim process
$ vi -r base.html
[ save your changes, quit ]
$ rm -f .base.html.swp
3
SYN

短い:いいえ、できません

long:parentプロセスが直接シェルでない限り、実際にはviはおそらく実行されません。 ps -eflを使用し、PPIDからPIDのデータに従って何が実行されているかを確認できます。

ただし、fgを使用してフォアグラウンドに切り替えることができるのはjobではありません。これは、現在のシェルのサブプロセスでのみ機能します。

inspectgdbまたはdtraceを使用してプロセスを実行できますが、プロセスの制御が失われています。

1
Thomas Dickey