İTerm2 penceresini ve sekme başlıklarını zsh olarak değiştirin


50

Terminal oturumlarının pencere sekmelerini etiketlemek istiyorum. OSX’de iterm2’deki zshell kullanıyorum. Bir pencere sekmesinin etiketini terminalde dinamik olarak değiştirmek mümkün müdür?

Yanıtlar:


48

zshİTerm2'nin pencere başlığını ayarlamak için aşağıdakini girebilirsiniz :

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

Bunu geçerli saati veya çalışma dizini eklemek için otomatikleştirmek istiyorsanız zsh, precmd()fonksiyondaki başlığı ayarlamak için yapılandırma dosyalarınızı düzenleyin $PWD.

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

precmdİşlev hakkında man zshmiscbölümdeki bilgileri okuyabilirsiniz SPECIAL FUNCTIONS.

görüntü tanımını buraya girin


3
echo -ne komutunu çalıştırdığımda "\ e] 1; bu, \ a" başlığıdır, tab başlığı değişmez. İterm2'de değiştirmem gereken bir ayar var mı?
bneil

15
Anladım. İterm-> Preferences-> görünüm bölümünde pencere ve sekme başlıklarının tüm seçeneklerinin seçimini kaldırmam gerekiyor. ve .zshrc içinde uncomment / export vermeliyim DISABLE_AUTO_TITLE = "true" Thanks @Daniel Beck
bneil

3
Ayrıca ayarlamanız gerekir Profiles > Terminal > Terminal Emulation > Terminal may set tab/window title.
vaughan

1
BU ÇALIŞMIYOR (benim için en azından) iTerm'in en son sürümünde (3.3.0)
iconoclast

Ve iTerm2(3.2.9) '
un

45

Benim için ne işe yarar:

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

Mac OSX ve iTerm kullanıyorsanız, iTerm2 ::

  • iTerm → Tercihler → Görünüm → Pencere ve Sekme Başlıkları → tümünün işaretini kaldırın

Zsh kullanıyorsanız, ayarlarınızı düzenlemeniz gerekebilir. Ayarlarınız tipik olarak dosyadadır ~/.zshrc. Bu çizginin bulunduğundan emin olmak için ayarlarınızı eklemek veya düzenlemek istiyorsunuz:

DISABLE_AUTO_TITLE="true"

2
Hala 28.02.2018 itibariyle çalışıyor.
salep

38

İTerm kullanmanın kolaylıklarından biri, pencere başlığını ve sekme başlığını ayrı ayrı ayarlama imkanıdır: ayrı ayrı sekme ve pencere başlığı kullanma örneği

# $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 $@; }

Bu şekilde hangi pencereye hangi pencereye bağlandığınızı anında görebilirsiniz ve her sekmenin pencere başlığı kullanıcı ve CWD'yi gösterir.


2
OS X Lion'daki Terminal.app sürümünün de bunu desteklediğini fark ettim.
Orangenhain

aptalca soru: Bu kodu eklersiniz .bashrc, değil mi?
qazwsx

Ayrıca (iTerm2 Build 1.0.0.20140629'da) Pencere Başlığını değiştirinceye kadar ... ne olursa olsun sekme başlığını izleyene kadar görünür. Bunun bir ayar olduğuna eminim. Pencere başlığı değiştirildikten sonra (2) artık sekme başlığını izlemez.
Mei,

Yukarıdaki işlevi DISABLE_AUTO_TITLE="true", sorunu
gideren

5

A precmdhile yapar. Bununla birlikte, bazı oh-my-zsh temaları pencere başlığına karışıyor. PR_TITLEBARDüzeltmek için boş bir dizeye ayarlayın .

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

İTerm2'nin sekme ayarlarıyla Tercihler -> Görünüm'de dolaşmanızı da tavsiye ederim.



2

Cevapların hiçbiri benim için işe yaramadı, muhtemelen iterm2 versiyonu için (3.3.3).

Bunu öğrendim: https://gist.github.com/phette23/5270658#gistcomment-3020766

Temel olarak, diğer tüm cevaplarda söylenenleri yapabilirsiniz, fakat aynı zamanda Preferences > Profiles > General > Title -> Name (Job)

Bu benim için çalıştı.


Bu altında değil Generalo altında, sekmesi Profilessekmesi
Falmarri

Sağ. > ProfilesBirini özledim . Benim hatam. Güncellenmiş.
Nuno Gonçalves

1

Kabul edilen cevap uzun süredir benim için çalıştı, ancak şimdi iTerm2'nin en son sürümünde bozulmuştur. Bulduğum bir geçici çözüm Python API'sini etkinleştirmek ve sekme adını şöyle ayarlayan bir komut dosyası oluşturmaktı:

#!/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)

"Tab_name.py" olarak kaydedildi, sonra:

~/Library/ApplicationSupport/iTerm2/iterm2env/versions/*/bin/python3 ~/Library/ApplicationSupport/iTerm2/Scripts/tab_name.py "new tab name"

Neredeyse kabul edilen cevap kadar hoş ya da zarif değil, ama işe yarıyor.


-2

iTerm -> Tercihler -> Görünüm -> Pencere ve Sekme başlıkları -> kontrol et Profil adı seçeneğini göster


1
Süper Kullanıcıya Hoşgeldiniz! Bu soru- cevap sitesinde, insanların sorduğu sorulara iyi cevaplar vermeye çalışıyoruz . İyi bir cevap yazmanın bir kısmı, önerilen çözüm için bağlam sağlamaktır. Lütfen cevabınızı düzenleyin ve çözümünüzün neden işe yaradığını ve özellikle bunun ne işe yaradığını açıklayın .
cascer1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.