回答:
以下を入力してzsh
、iTerm2のウィンドウタイトルを設定できます。
echo -ne "\e]1;this is the title\a"
これを自動化して、たとえば現在の時刻や作業ディレクトリを挿入する場合は、zsh
構成ファイルを編集して、precmd()
関数のタイトルをegに設定します$PWD
。
echo -ne "\e]1;$PWD\a"
セクションのprecmd
機能について読むことができます。man zshmisc
SPECIAL FUNCTIONS
Profiles > Terminal > Terminal Emulation > Terminal may set tab/window title
ます。
iTerm2
(3.2.9)
私のために働くもの:
echo -e "\033];this is the title\007"
Mac OSXとiTermを使用している場合、iTerm2 ::
zshを使用する場合、設定を編集する必要がある場合があります。通常、設定はファイルにあります~/.zshrc
。設定を追加または編集して、この行が存在することを確認します。
DISABLE_AUTO_TITLE="true"
iTermを使用するメリットの1つは、ウィンドウタイトルとタブタイトルを個別に設定できることです。
# $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が表示されます。
.bashrc
に追加しますか?
DISABLE_AUTO_TITLE="true"
、問題を修正する行を含めるようにしました。タイトルを設定しない場合、この方法で自動タイトル機能を利用できます
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のタブ設定を試してみることをお勧めします。
おそらくiterm2バージョン(3.3.3)の場合、答えはどれもうまくいかないようです。
私はこれを見つけました:https : //gist.github.com/phette23/5270658#gistcomment-3020766
基本的に、他のすべての答えで言われたことは何でもできますが、設定する必要もあります
Preferences > Profiles > General > Title -> Name (Job)
これは私のために働いた。
General
、それは下だ、タブProfiles
タブ
> Profiles
。私の悪い。更新しました。
受け入れられた答えは私のために長い間働いていましたが、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"
受け入れられている答えほど美しくもエレガントでもありませんが、機能します。