ฉันต้องการติดป้ายแท็บหน้าต่างของเซสชันเทอร์มินัล ฉันใช้ zshell ใน iterm2 บน OSX เป็นไปได้ที่จะเปลี่ยนฉลากของแท็บหน้าต่างแบบไดนามิกในเทอร์มินัลหรือไม่?
ฉันต้องการติดป้ายแท็บหน้าต่างของเซสชันเทอร์มินัล ฉันใช้ zshell ใน iterm2 บน OSX เป็นไปได้ที่จะเปลี่ยนฉลากของแท็บหน้าต่างแบบไดนามิกในเทอร์มินัลหรือไม่?
คำตอบ:
คุณสามารถป้อนข้อมูลต่อไปนี้zsh
เพื่อตั้งค่าชื่อหน้าต่างของ iTerm2:
echo -ne "\e]1;this is the title\a"
หากคุณต้องการโดยอัตโนมัติที่จะแทรกเช่นเวลาปัจจุบันหรือไดเรกทอรีทำงานของคุณแก้ไขzsh
แฟ้มการกำหนดค่าการตั้งชื่อในฟังก์ชั่นเช่นprecmd()
$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 = 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"
ที่แก้ไขปัญหาและด้วยวิธีนี้หากฉันไม่ได้ตั้งชื่อฉันยังคงได้รับคุณสมบัติชื่ออัตโนมัติ
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
หนึ่ง ความผิดฉันเอง. Updated
คำตอบที่ยอมรับนั้นได้ผลสำหรับฉันเป็นเวลานาน แต่ตอนนี้แตกใน 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"
มันไม่ได้ดีหรือสง่างามเท่าคำตอบที่ยอมรับ แต่ใช้งานได้
iTerm -> การตั้งค่า -> ลักษณะที่ปรากฏ -> ชื่อหน้าต่าง & แท็บ -> เลือกตัวเลือกแสดงชื่อโปรไฟล์