Risposte:
È possibile inserire quanto segue zsh
per impostare il titolo della finestra di iTerm2:
echo -ne "\e]1;this is the title\a"
Se si desidera automatizzare ciò per inserire ad esempio l'ora corrente o la directory di lavoro, modificare i zsh
file di configurazione per impostare il titolo nella precmd()
funzione su ad es $PWD
.
echo -ne "\e]1;$PWD\a"
Puoi leggere la precmd
funzione nella man zshmisc
sezione SPECIAL FUNCTIONS
.
Profiles > Terminal > Terminal Emulation > Terminal may set tab/window title
.
iTerm2
(3.2.9)
Cosa funziona per me:
echo -e "\033];this is the title\007"
Se usi Mac OSX e iTerm, iTerm2 ::
Se si utilizza zsh, potrebbe essere necessario modificare le impostazioni. Le tue impostazioni sono in genere nel file ~/.zshrc
. Vuoi aggiungere o modificare le tue impostazioni per assicurarti che questa riga esista:
DISABLE_AUTO_TITLE="true"
Uno dei vantaggi dell'utilizzo di iTerm è la possibilità di impostare separatamente il titolo della finestra e il titolo della scheda:
# $1 = type; 0 - both, 1 - tab, 2 - title
# rest = text
setTerminalText () {
# echo works in bash & zsh
local mode=$1 ; shift
echo -ne "\033]$mode;$@\007"
}
stt_both () { setTerminalText 0 $@; }
stt_tab () { setTerminalText 1 $@; }
stt_title () { setTerminalText 2 $@; }
In questo modo puoi immediatamente vedere a quale host sei connesso in quale finestra e il titolo della finestra per ogni scheda mostra user & CWD.
.bashrc
, giusto?
DISABLE_AUTO_TITLE="true"
che ha risolto il problema e in questo modo se non imposto il titolo, ottengo ancora la funzione automatica del titolo
A precmd
fa il trucco. Tuttavia, alcuni temi oh-my-zsh si scherzano con il titolo della finestra. Impostare PR_TITLEBAR
su una stringa vuota per risolverlo.
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
Consiglierei anche di giocare con le impostazioni della scheda di iTerm2 in Preferenze -> Aspetto.
Nessuna delle risposte sembrava funzionare per me, probabilmente per la versione iterm2 (3.3.3).
L'ho scoperto: https://gist.github.com/phette23/5270658#gistcomment-3020766
In sostanza, puoi fare tutto ciò che viene detto in tutte le altre risposte, ma devi anche impostare
Preferences > Profiles > General > Title -> Name (Job)
Questo ha funzionato per me.
General
scheda, è sotto la Profiles
scheda
> Profiles
quello. Colpa mia. Aggiornato.
La risposta accettata ha funzionato per me per molto tempo ma ora è interrotta nell'ultima versione di iTerm2. Una soluzione alternativa che ho trovato è stata quella di abilitare l'API Python e creare uno script che imposta il nome della scheda in questo modo:
#!/usr/bin/env python3.7
import argparse
import iterm2
def get_args():
parser = argparse.ArgumentParser(description='Set the tab name')
parser.add_argument('name')
return parser.parse_args()
ARGS = get_args()
async def main(connection):
app = await iterm2.async_get_app(connection)
window = app.current_terminal_window
if window is not None:
tab = window.current_tab
await tab.async_set_title(ARGS.name)
else:
# You can view this message in the script console.
print("No current window")
iterm2.run_until_complete(main)
Salvato come "tab_name.py", quindi invocato con:
~/Library/ApplicationSupport/iTerm2/iterm2env/versions/*/bin/python3 ~/Library/ApplicationSupport/iTerm2/Scripts/tab_name.py "new tab name"
Non è bello o elegante come la risposta accettata, ma funziona.
iTerm -> Preferenze -> Aspetto -> Titoli di finestre e schede -> seleziona Mostra l'opzione nome profilo