it-swarm.com.de

Ändern Sie die iTerm2-Fenster- und Tabulatortitel in zsh

Ich möchte die Fensterregisterkarten von Terminalsitzungen kennzeichnen. Ich verwende die zshell in iterm2 unter OSX. Ist es möglich, die Beschriftung einer Fensterregisterkarte im Terminal dynamisch zu ändern?

49
bneil

Sie können in zsh Folgendes eingeben, um den Fenstertitel von iTerm2 festzulegen:

echo -ne "\e]1;this is the title\a"

Wenn Sie dies zum Einfügen automatisieren möchten, z. Bearbeiten Sie die Konfigurationsdateien für zsh für die aktuelle Uhrzeit oder das aktuelle Arbeitsverzeichnis, um den Titel in der Funktion precmd() auf z. $PWD.

echo -ne "\e]1;$PWD\a"

Informationen zur Funktion precmd finden Sie in man zshmisc im Abschnitt SPECIAL FUNCTIONS.

enter image description here

47
Daniel Beck

Was funktioniert bei mir:

echo -e "\033];this is the title\007"

Wenn Sie Mac OSX und iTerm verwenden, ist iTerm2 ::

  • iTerm → Einstellungen → Darstellung → Fenster- und Tabulatortitel → Alle deaktivieren

Wenn Sie zsh verwenden, müssen Sie möglicherweise Ihre Einstellungen bearbeiten. Ihre Einstellungen befinden sich normalerweise in der Datei ~/.zshrc. Sie möchten Ihre Einstellungen hinzufügen oder bearbeiten, um sicherzustellen, dass diese Zeile vorhanden ist:

DISABLE_AUTO_TITLE="true"
44

Eine der Vorteile von iTerm ist die Möglichkeit, Fenstertitel und Tabulatortitel separat festzulegen: example of using tab & window title separately

# $1 = type; 0 - both, 1 - tab, 2 - title
# rest = text
setTerminalText () {
    # echo works in bash & zsh
    local mode=$1 ; shift
    echo -ne "\033]$mode;[email protected]\007"
}
stt_both  () { setTerminalText 0 [email protected]; }
stt_tab   () { setTerminalText 1 [email protected]; }
stt_title () { setTerminalText 2 [email protected]; }

Auf diese Weise können Sie sofort sehen, mit welchem ​​Host Sie in welchem ​​Fenster verbunden sind, und der Fenstertitel für jede Registerkarte zeigt Benutzer und CWD an.

38
Orangenhain

Eine precmd erledigt den Trick. Einige oh-my-zsh-Themen spielen jedoch mit dem Fenstertitel herum. Setzen Sie PR_TITLEBAR auf eine leere Zeichenfolge, um das Problem zu beheben.

set-window-title() {
  # /Users/clessg/projects/dotfiles -> ~/p/dotfiles
  window_title="\e]0;${${PWD/#"$HOME"/~}/projects/p}\a"
  echo -ne "$window_title"
}

PR_TITLEBAR=''
set-window-title
add-zsh-hook precmd set-window-title

Ich würde auch empfehlen, mit den Registerkarteneinstellungen von iTerm2 in den Einstellungen -> Darstellung herumzuspielen.

4
Chris Gaudreau

Das Hinzufügen von export Prompt_COMMAND='echo -ne "\033]0;$PWD\007"' zu ~/.bash_profile hat bei mir funktioniert.

https://Apple.stackexchange.com/a/90737/49605

2
michalzuber