Frage Mit Bash + iTerm2, wie Tabs zu benennen?


In iTerm2 (Build 1.0.0.20120203), öffne ich in der Regel mehrere Registerkarten, von denen jedes geteilte Bereiche hat, und ist über ein bestimmtes Thema der Arbeit, zum Beispiel Revisionskontrolle, Programmierung, Verwaltung von Dateien, MySQL Terminal-Arbeit. Normalerweise muss ich in meinem Arbeitsablauf zwischen 5 oder mehr Tabs wechseln. Es ist manchmal schwer, sich zu erinnern oder zu sagen, welches das ist, wenn man den Inhalt des Bildschirms betrachtet. Ich würde gerne die Tabs irgendwie benennen, so dass ich schnell erkennen kann, welches das ist, wenn ich schnell hinschaue. Ist das möglich?


152
2018-05-02 19:08


Ursprung


mögliches Duplikat von Ändern Sie die iTerm2-Fenster- und Registerkartentitel in zsh - Daniel Beck♦
Nicht vollständig duplizieren. Wie kann ich die aktuell laufende App als Teil des Tab-Titels hinzufügen? I.e. Auf welcher Registerkarte werden Emacs, MySQL usw. ausgeführt? - qazwsx
I.e. Alle meine Tabs haben denselben Host und Benutzer. Wenn Sie diese verwenden, werden meine Tabs nicht unterschieden. - qazwsx
Du meinst du willst Zeigt den aktuellen Jobnamen an von iTerm's Vorlieben? Beachten Sie, dass es sich bei dem verknüpften Thema nicht um den Benutzernamen oder den Host handelt. - Daniel Beck♦
Richtig, ich möchte einige Hinweise darauf geben, welches Programm in den einzelnen Registerkarten ausgeführt wird oder ausgeführt wurde. Die im anderen Post angegebene Lösung funktioniert auch nicht für Bash + iTerm2. - qazwsx


Antworten:


Da Sie iterm2 auf einem Mac verwenden, können Sie einfach Cmd-I drücken, etwas eingeben und Escape drücken.

Die Terminal-Lösung ist ein bisschen schneller als das, aber wollte nur Sie wissen lassen.


182
2017-08-08 15:29



Dies funktioniert für eine Sekunde, bis ich eine Rückgabe auf der Registerkarte, die ich umbenannt habe, ausstelle. - Stewie
@Stewie Deaktivieren Sie in den Einstellungen -> Profile -> Terminal die Option "Terminal darf Fenstertitel melden". - Max Cantor
Es ist nicht markiert. Es benennt immer noch den Titel um. - Stewie
@SteveBennett es ist nicht das "Thema" (eigentlich ist der Begriff "Profil") selbst; Der Befehl CMD + I lautet "Aktuelle Sitzung bearbeiten ..." (im Menü Ansicht), sodass nur die Profilinstanz dieses Reiters geändert wird. Hitting Escape schließt nur das Fenster, das benötigt wird, da dieses Fenster keinen "Speichern" -Knopf aufweist. - MidnightLightning
Was ist, wenn Sie mehrere Fenster geöffnet haben? Müssen Sie jeden umbenennen, um den Tab selbst zu benennen? - theicfire


Ich habe die folgende Funktion gefunden, platziert in meinem ~/.bashrc hilfreich sein:

function title {
    echo -ne "\033]0;"$*"\007"
}

Dann kann ich es von meinem Bash-Prompt wie folgt aufrufen:

> title I want a pony!

Und mein Tab wird entsprechend betitelt.


105
2018-05-23 17:57



Ich habe das versucht, aber es funktioniert immer noch nicht. Ich setze diese Definition in bash_aliasesund lade es ein .profile (if [ -f ${HOME}/.bash_aliases ]; then . ${HOME}/.bash_aliases fi) Aber dann title dog Tab-Titel wurde nicht in "Hund" umgewandelt - qazwsx
+1 - Ich habe meine zu / etc / profile hinzugefügt, nur weil das meine Aliasnamen sind ... vergiss nicht die Datei zu finden, nachdem du fertig bist. Hinweis: Dies funktioniert auch im Terminal. - blak3r
Sehr hilfreich. Ich wollte ein Pony; und ich habe eins! - SoEzPz
Ich legte meine in .bash_profile, neu gestartet und es funktionierte wie ein Charme. - C Johnson
funktioniert auch für zsh - Sagar Jauhari


Führen Sie diesen Befehl aus, um den Titel Ihres Tabs oder Fensters festzulegen:

export PROMPT_COMMAND='echo -ne "\033]0;YOUR NAME HERE\007"'

Ich habe folgendes zu meinem hinzugefügt ~/.bash_profile um immer das aktuelle Verzeichnis relativ zu meinem Home-Verzeichnis aufzulisten:

export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'

nützlich, wenn Sie 100 minimierte Terminals in Ihrem Dock haben

Hutspitze zur Mac-Welt


40
2018-03-04 00:33



Funktioniert! Bedenken Sie, dass entweder .bashrc oder .bash_profiles geladen werden können und nicht beides zusammen. Ich hatte bereits eine .bash_profiles-Datei, also musste ich sie in diese Datei einfügen. Vielen Dank. - therealmarv
oh Danke! Ich habe die Antwort aktualisiert, um dem zu entsprechen. ich habe "source ~ / .bashrc" in meinem .bash_profile und vergessen, dass dies nicht üblich ist - schpet


Fügen Sie diese Funktion zu Ihrer hinzu ~/.bash_profile Datei und es sollte funktionieren.

function title ()
{
    TITLE=$*;
    export PROMPT_COMMAND='echo -ne "\033]0;$TITLE\007"'
}

15
2017-10-24 03:26





Ich habe schon eine ganze Weile ähnliche Lösungen verwendet, aber ich verwende genug Tabs, die ich auch für eine einfache visuelle Referenz farblich kodieren möchte. Also habe ich hochgepeitscht Tabset, ein Dienstprogramm, um den Titel, das Abzeichen und die Farbe der Registerkarte basierend auf der Art der Arbeit einzustellen, die ich auf den einzelnen Registerkarten mache.

example

Es benötigt Knoten, aber das ist jetzt eine häufig installierte Plattform. Installieren:

npm install -g iterm2-tab-set

11
2018-06-15 14:19



Das ist fantastisch! Ich mag besonders die automatische Einstellung der Tab-Farbe. Vielen Dank! - Ashutosh Jindal


Ich mag diesen:

#setup terminal tab title
function title {
    if [ "$1" ]
    then
        unset PROMPT_COMMAND
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
    fi
}
title

Sie können den Namen einer Registerkarte zwischen einem benutzerdefinierten Namen und einem Standard Ihrer CWD ändern.

title -> Ihr Tab-Titel wird sein ~/YOUR_CWD/

title hey there -> Ihr Tab-Titel wird sein hey there


6
2017-07-26 15:29



Beachten Sie, dass dies, wie es ist, klobig ist iTerm Shell-Integration. - Michael


ich mag wirklich Taylorstins Antwort, aber es bricht iTerm2's Shell-Integration was auf die beruht PROMPT_COMMAND Variable. Sie können den Taylor-Code modifizieren, um dies zu korrigieren, indem Sie den __bp_precmd_invoke_cmd zurück in die PROMPT_COMMAND jedes mal wenn du daran bastelst:

# iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
    if [ "$1" ]
    then
        export PROMPT_COMMAND='__bp_precmd_invoke_cmd'
        echo -ne "\033]0;${*}\007"
    else
        export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/\~}\007";__bp_precmd_invoke_cmd'
    fi
}
title

4
2018-03-30 14:45





ich mag Michael's Antworten.

Aber was wenn .iterm2_shell_integration.bash ist nicht vorhanden?

Hier ist meine Meinung:

# iTerm2 shell integration
test -e "${HOME}/.iterm2_shell_integration.bash" && source "${HOME}/.iterm2_shell_integration.bash"

# iTerm2 tab titles
function title {
  if [ "$1" ] ; then
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='iterm2_preexec_invoke_cmd' \
      || unset PROMPT_COMMAND
    echo -ne "\033]0;${*}\007"
  else
    test -e "${HOME}/.iterm2_shell_integration.bash" \
      && export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007";iterm2_preexec_invoke_cmd' \
      || export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
  fi
}
title

3
2018-05-23 13:21



Beachten Sie, dass in Version 3.1 iterm2_preexec_invoke_cmd wurde __bp_precmd_invoke_cmd - Michael