多分これは私たちが式からalias
を削除すると見ることが少し簡単です:
echo banana; sleep 5s; echo sausage
は、「バナナ」をエコー5秒間待つだけにして「ソーセージ」を出力しますので、
htop; tmux refresh-client -S
はhtopを実行し、終了するまで待ってからを入力し、次にを実行してtmux refresh-client -S
を実行します。この時点で、魚は再びフォアグラウンドプロセスになります。
代わりに、シェルをtmuxと統合する必要があります。今、明らかにtmuxははNames and titlesのエスケープシーケンスを持っているので、
printf '\ekhtop\e\\' # \e is \033 - the escape character
は「ホテルトップ」に、ウィンドウのタイトルを変更します。
魚は、関数が結合することができるイベントを持っているので、
function tmux_name --on-event fish_preexec
printf '\ek%s\e\\' "$argv" # the argument for preexec is the commandline about to be executed
end
のようなものは、コマンドラインに常にtmuxのウィンドウ名を設定します。 「、それをそれはまださえ非常に短期実行コマンドのタイトルを設定します - コマンドが終了したとき、これはそれをリセットしませんので、我々は、これが完璧か何かであることを
function tmux_reset_name --on-event fish_postexec
# $argv for postexec is also the commandline
# so we can't use it. Just hardcode "fish".
printf '\ek%s\e\\' fish
end
第2の機能を必要はありません長いコマンドでも完全なコマンドラインを使用します(多分$ argv [1]を使う方が良いでしょう)。
これらの関数は、config.fishまたはそれが明示的に指定するファイル(または〜/ .config/fish/conf.d /)に定義する必要があることに注意してください。これは、関数ファイルがオートロードされるためです。イベントについて知っている。
これはまさに私が探していたものです!どうもありがとう!ところで、それはデフォルトとしてtmuxの魚のソースに追加する必要がありますか? – sandric
tmuxの魚源は? AFAIKは魚に特化したものを何もしていないtmuxプロジェクトがあります。そして、tmuxをターミナルとして扱う魚がありますが、このようなものはありません。 – faho