zsh에서 iTerm2 창 및 탭 제목 변경


50

터미널 세션의 창 탭에 레이블을 지정하고 싶습니다. OSX의 iterm2에서 zshell을 사용하고 있습니다. 터미널에서 창 탭의 레이블을 동적으로 변경할 수 있습니까?

답변:


48

zshiTerm2의 창 제목을 설정 하려면 다음을 입력하십시오 .

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

예를 들어 현재 시간 또는 작업 디렉토리를 삽입하도록 자동화하려면 zsh구성 파일을 편집하여 precmd()함수 의 제목 을 예를 들어 로 설정하십시오 $PWD.

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

섹션에서 precmd기능에 대해 읽을 수 있습니다 .man zshmiscSPECIAL FUNCTIONS

여기에 이미지 설명을 입력하십시오


3
echo -ne "\ e] 1; 이것은 제목 \ a"명령을 실행할 때 탭 제목이 변경되지 않습니다. iterm2에서 변경해야 할 설정이 있습니까?
bneil

15
알아 냈습니다. iterm-> 기본 설정-> 모양 섹션에서 창 및 탭 제목에 대한 모든 옵션을 선택 취소해야합니다. 그리고 .zshrc에서 내보내기를 주석 해제 / 추가해야합니다. DISABLE_AUTO_TITLE = "true"감사합니다
@Daniel

3
또한 설정해야합니다 Profiles > Terminal > Terminal Emulation > Terminal may set tab/window title.
vaughan

1
이 용어는 iTerm (3.3.0)의 최신 버전에서 (적어도 나를 위해) 작동하지 않습니다
iconoclast

그리고 안정적인 최신 버전 iTerm2(3.2.9) 에서 작동하지 않습니다.
jalanb

45

나를 위해 일하는 것 :

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

Mac OSX 및 iTerm을 사용하는 경우 iTerm2 ::

  • iTerm → 환경 설정 → 모양 → 창 및 탭 제목 → 모두 선택 해제

zsh를 사용하는 경우 설정을 편집해야 할 수도 있습니다. 설정은 일반적으로 파일에 ~/.zshrc있습니다. 이 줄이 존재하도록 설정을 추가하거나 편집하려고합니다.

DISABLE_AUTO_TITLE="true"

2
여전히 2018 년 2 월 28 일부터 작동합니다.
salep

38

iTerm을 사용하는 편의 시설 중 하나는 창 제목과 탭 제목을 별도로 설정할 수 있다는 것입니다. 탭과 창 제목을 별도로 사용하는 예

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

이렇게하면 어떤 창에서 어떤 호스트에 연결되어 있는지 즉시 확인할 수 있으며 각 탭의 창 제목에는 사용자 및 CWD가 표시됩니다.


2
OS X Lion의 Terminal.app 버전에서도이 기능을 지원합니다.
Orangenhain

바보 같은 질문 :이 코드를에 추가 .bashrc하시겠습니까?
qazwsx

또한 창 제목을 변경할 때까지 (iTerm2 Build 1.0.0.20140629에서) 탭 제목을 추적합니다. 그게 설정이라고 확신합니다. 창 제목이 변경되면 (2) 더 이상 탭 제목을 추적하지 않습니다.
메이

DISABLE_AUTO_TITLE="true"문제를 해결 한 줄을 포함하도록 위의 기능을 수정했습니다 . 제목을 설정하지
않아도이 방법

5

A는 precmd트릭을 수행합니다. 그러나 일부 oh-my-zsh 테마는 창 제목으로 엉망입니다. PR_TITLEBAR빈 문자열로 설정 하여 수정하십시오.

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

또한 환경 설정-> 모양에서 iTerm2의 탭 설정을 가지고 노는 것이 좋습니다.



2

아마도 iterm2 버전 (3.3.3)에 대한 대답은 효과가 없었습니다.

나는 이것을 발견했다 : https://gist.github.com/phette23/5270658#gistcomment-3020766

본질적으로 다른 모든 답변에서 언급 된 모든 것을 할 수 있지만 설정해야합니다. Preferences > Profiles > General > Title -> Name (Job)

이것은 나를 위해 일했습니다.


이것은 아래되지 General는 아래의 탭 Profiles
Falmarri

권리. 나는 > Profiles하나를 놓쳤다 . 내 잘못이야. 업데이트되었습니다.
Nuno Gonçalves

1

허용 된 답변은 오랫동안 효과가 있었지만 최신 버전의 iTerm2에서는 깨졌습니다. 내가 찾은 해결 방법은 Python API를 활성화하고 탭 이름을 다음과 같이 설정하는 스크립트를 만드는 것입니다.

#!/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"로 저장 한 후 다음을 사용하여 호출합니다.

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

허용되는 답변만큼 멋지거나 우아하지는 않지만 작동합니다.


-2

iTerm-> 환경 설정-> 모양-> 창 및 탭 제목-> 확인 프로필 이름 표시 옵션


1
슈퍼 유저에 오신 것을 환영합니다! 이 Q & A 사이트에서는 사람들이 묻는 질문 에 대한 좋은 답변 을 제공하려고합니다 . 좋은 답변을 작성하는 것의 일부는 제안 된 솔루션에 대한 맥락을 제공하는 것입니다. 답변을 수정하고 솔루션이 작동하는 이유와 구체적으로 무엇을 수행하는지 설명하십시오 .
cascer1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.