Odpowiedzi:
Możesz wprowadzić następujące dane, zsh
aby ustawić tytuł okna iTerm2:
echo -ne "\e]1;this is the title\a"
Jeśli chcesz zautomatyzować wstawianie np. Aktualnego czasu lub katalogu roboczego, edytuj zsh
pliki konfiguracyjne, aby ustawić tytuł w precmd()
funkcji np $PWD
.
echo -ne "\e]1;$PWD\a"
Możesz przeczytać o precmd
funkcji w man zshmisc
sekcji SPECIAL FUNCTIONS
.
Profiles > Terminal > Terminal Emulation > Terminal may set tab/window title
.
iTerm2
(3.2.9)
Co dla mnie działa:
echo -e "\033];this is the title\007"
Jeśli używasz Mac OSX i iTerm, iTerm2 ::
Jeśli korzystasz z zsh, może być konieczna edycja ustawień. Twoje ustawienia są zwykle w pliku ~/.zshrc
. Chcesz dodać lub edytować ustawienia, aby upewnić się, że ten wiersz istnieje:
DISABLE_AUTO_TITLE="true"
Jedną z udogodnień korzystania z iTerm jest możliwość osobnego ustawienia tytułu okna i tytułu karty:
# $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 $@; }
W ten sposób możesz od razu zobaczyć, z którym hostem jesteś połączony w jakim oknie, a tytuł okna dla każdej karty pokazuje użytkownika i CWD.
.bashrc
, prawda?
DISABLE_AUTO_TITLE="true"
który rozwiązał problem. W ten sposób, jeśli nie
A precmd
załatwia sprawę. Jednak niektóre motywy oh-my-zsh mieszają się z tytułem okna. Ustaw PR_TITLEBAR
pusty ciąg, aby go naprawić.
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
Poleciłbym również zabawę z ustawieniami zakładki iTerm2 w Preferencjach -> Wygląd.
Dodanie export PROMPT_COMMAND='echo -ne "\033]0;$PWD\007"'
do ~/.bash_profile
działało dla mnie.
Żadna z odpowiedzi nie działała dla mnie, prawdopodobnie dla wersji iterm2 (3.3.3).
Znalazłem to: https://gist.github.com/phette23/5270658#gistcomment-3020766
Zasadniczo możesz zrobić wszystko, co powiedziano we wszystkich innych odpowiedziach, ale musisz także ustawić
Preferences > Profiles > General > Title -> Name (Job)
To zadziałało dla mnie.
General
zakładką, jest pod Profiles
zakładką
> Profiles
. Mój błąd. Zaktualizowano
Przyjęta odpowiedź działała dla mnie od dłuższego czasu, ale jest teraz zepsuta w najnowszej wersji iTerm2. Obejściem, które znalazłem, było włączenie API Pythona i utworzenie skryptu, który ustawia nazwę karty tak:
#!/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)
Zapisano jako „tab_name.py”, a następnie wywołano za pomocą:
~/Library/ApplicationSupport/iTerm2/iterm2env/versions/*/bin/python3 ~/Library/ApplicationSupport/iTerm2/Scripts/tab_name.py "new tab name"
Nie jest tak ładny ani elegancki jak zaakceptowana odpowiedź, ale działa.
iTerm -> Preferencje -> Wygląd -> Tytuły okien i kart -> zaznacz opcję Pokaż nazwę profilu