~/vim.txt
私がそれを開き、バックグラウンドにプッシュしてからcd
別のパスにプッシュすると仮定します。これをフォアグラウンドにインポートするときに前のパスに戻すオプションはありますか?と書かれているのを見て、pwd
それが可能だと思いました。
答え1
これはzshで可能です。実際には、zshが提供するジョブパラメータに直接アクセスできるので簡単です。zsh/パラメータモジュール。ジョブ番号またはジョブ仕様(など)を配列の下付き文字として使用%+
でき%-
ます%foo
。
zmodload zsh/parameter
fgcd () {
local dir=$jobdirs[${1:-%+}]
# If the jobspec matched, then call cd. Otherwise it's probably a bad
# job spec, but call fg anyway to get the usual error message.
if [[ -n $dir ]]; then cd $dir; fi
fg $1
}
Bashもこの情報を追跡しますが、公開されていないようです。一部のシステムでは、作業プロセスの現在の作業ディレクトリをインポートしてそのディレクトリに切り替えることができます。たとえば、Linuxでは、/proc/$pid/cwd
プロセスの作業ディレクトリへのシンボリックリンクです。
fgcd () { # Linux only
local pid=$(jobs -p $1)
if [[ -n $pid ]]; then cd /proc/$pid/cwd; fi
fg $1
}
便利なので、ここにzshのバージョンがあります。タスクの元のディレクトリに切り替える上記の関数とは異なり、この関数はタスクプロセスリーダーの現在のタスクディレクトリに切り替えます。
fgcd () { # Linux only
local pid=${${${jobstates[${1:-%+}]}#*:*:}%\=*}
if [[ -n $pid ]]; then cd /proc/$pid/cwd; fi
fg $1
}