Vielleicht ist dies ein wenig leichter zu sehen, wenn wir die alias
aus der Gleichung entfernen:
echo banana; sleep 5s; echo sausage
wird echo „Banane“, 5 Sekunden warten und erst dann drucken „Wurst“, so
htop; tmux refresh-client -S
wird htop laufen, warten bis es fertig ist und dann run tmux refresh-client -S
, an diesem Punkt Fisch wird wieder der Vordergrund Prozess sein.
Was stattdessen getan werden müsste ist die Schale mit tmux zu integrieren zu bekommen. Nun, offenbar hat tmux eine Escape-Sequenz für Names and titles, so
printf '\ekhtop\e\\' # \e is \033 - the escape character
ändert den Fenstertitel auf "htop".
Fisch hat Ereignisse, die Funktionen gebunden werden können, so etwas wie
function tmux_name --on-event fish_preexec
printf '\ek%s\e\\' "$argv" # the argument for preexec is the commandline about to be executed
end
den tmux Fensternamen immer auf die Befehlszeile festgelegt. Dies wird nicht zurückgesetzt, wenn der Befehl beendet ist, so brauchen wir eine zweite Funktion
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
Nicht, dass dies perfekt oder so - es immer noch den Titel für sehr kurzen Lauf Befehle sogar eingestellt wird, ist es Ich benutze die volle Befehlszeile auch für lange Befehle (vielleicht wäre nur $ argv [1] besser).
Beachten Sie, dass diese Funktionen in config.fish oder einer Datei definiert werden müssen, die explizit von ihr stammt (oder ~/.config/fish/conf.d /), da Funktionsdateien automatisch geladen werden, also Fische nicht kenne die Veranstaltung.
Genau das habe ich gesucht! Danke vielmals! Übrigens, vielleicht sollte das zu tmux Fischquellen als Standard hinzugefügt werden? – sandric
Was tmux Fischquellen? Es gibt das tmux-Projekt, bei dem AFAIK nichts Fischspezifisches macht, und dann gibt es Fische, die tmux-as-a-terminal handhaben, aber nichts dergleichen, das das Standard-tmux-Verhalten durch sein eigenes ersetzt. – faho