/ / Kann ich die Ausgabe einer benutzerdefinierten ZSH-Funktion in der Statusleiste von Tmux verwenden? - zsh, tmux

Kann ich die Ausgabe einer benutzerdefinierten ZSH-Funktion in der Statusleiste von Tmux verwenden? - zsh, tmux

Zsh

Ich habe eine Funktion in ~ / .zshrc definiert:

foo() { print "FOO" }

Ich möchte es in meiner Tmux-Statusleiste ausgeben. Ich habe dies zu ~ / .tmux.conf hinzugefügt:

set -g status-right "foo: #(foo)"

Aber ich sehe nur den statischen Teil davon; Die Funktionsausgabe fehlt. (Während meine eigentliche Funktion komplizierter ist, gilt dies auch für das obige triviale Beispiel.)

Es funktioniert gut, wenn ich ein Skript anstelle einer Funktion aufrufe. Was ist der Unterschied? Kann man dort eine Funktion verwenden?

Antworten:

7 für Antwort № 1

Das tmux Manpage Staaten für die set Möglichkeit:

#(shell-command) Erste Zeile der Befehlsausgabe

Aber ich bin mir ziemlich sicher, das heißt nicht Shell funcitons, weil tmux wird das nicht ausführen shell-command in der aktuellen Shell-Sitzung, sondern starten Sie eine neue Instanz, die als startet nicht interaktiv, daher nicht Ihre Quelle ~/.zshrc config und kennt die darin definierten Funktionen nicht.

Um das Problem zu umgehen, können Sie eine Shell erstellen Skript, genannt foo

#!/bin/zsh -f

source ~/.zshrc   # or just the desired function to save parsing time
# use some functions defined in ~/.zshrc

print "FOO"

Verwandte Fragen
Bemerkungen
Einen Kommentar hinzufügen