zsh에서 iTerm2 창 및 탭 제목 변경 터미널 세션의 창 탭에 레이블을

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



답변

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

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

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

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

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


답변

나를 위해 일하는 것 :

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

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

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

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

DISABLE_AUTO_TITLE="true"

답변

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가 표시됩니다.


답변

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의 탭 설정을 가지고 노는 것이 좋습니다.


답변

추가 export PROMPT_COMMAND='echo -ne "\033]0;$PWD\007"'~/.bash_profile나를 위해 일했습니다.

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


답변

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

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

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

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


답변

허용 된 답변은 오랫동안 효과가 있었지만 최신 버전의 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"

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