ฉันสามารถตั้งชื่อเริ่มต้นสำหรับหน้าต่าง tmux ได้หรือไม่?


38

ตอนนี้ชื่อเริ่มต้นเป็นreattach-to-user-namespace(OS X) ซึ่งค่อนข้างน่ารำคาญ มีตัวเลือกที่ฉันสามารถใส่ลงในของฉันtmux.confเพื่อรับชื่อเริ่มต้นอื่นได้หรือไม่

ถ้าไม่ฉันจะสร้างการเชื่อมโยงคีย์ที่สร้างหน้าต่างใหม่แล้วแจ้งชื่อให้ฉันได้อย่างไร


ดูคำตอบได้ที่นี่superuser.com/questions/306028/…
Fredrik Pihl

นั่นคือเกี่ยวกับการปิดใช้งานการเปลี่ยนชื่ออัตโนมัติ (ซึ่งฉันได้ทำไปแล้ว) ไม่ใช่เกี่ยวกับชื่อเริ่มต้นใช่ไหม
js-coder

ฉันคิดว่าคุณพูดถูกต้องขอโทษด้วย!
Fredrik Pihl

ฉันใช้set-option -g default-command "reattach-to-user-namespace -l zsh"และส่วนใหญ่เวลาสิ้นสุดด้วยหน้าต่างที่มีชื่อzshตามที่ต้องการ reattach-to-user-namespaceสำหรับเหตุผลที่ไม่รู้จักบางครั้งชื่อไม่สลับและหน้าต่างที่เรียกว่า ฉันยังไม่ได้สังเกตเห็นรูปแบบว่าเมื่อใด / เพราะเหตุนี้เกิดขึ้น แต่ดูเหมือนว่าอาจมีข้อบกพร่องเล็กน้อยหรือสิ่งที่อยู่ในการกำหนดค่า
Jim Stewart

วิธีที่ดีที่สุดที่จะใส่หมายเลขหน้าต่างในชื่อคืออะไร?
DanCat

คำตอบ:


43

ไม่มีชื่อหน้าต่างเริ่มต้นส่วนกลางที่ใช้กับหน้าต่างใหม่ทั้งหมด พวกเขาเริ่มต้นที่ (ส่วนหนึ่ง) "คำ" แรกของคำสั่ง (หรือเปลือกเริ่มต้นหากไม่มีคำสั่ง) หน้าต่างของคุณอาจเริ่มต้นreattach-to-user-namespaceเนื่องจากคุณเป็นบิตแรกที่น่าสนใจสำหรับdefault-commandค่าของคุณ

มันจะเป็นการปัดเศษเล็กน้อย แต่คุณสามารถใส่คำสั่งเริ่มต้นในเชลล์สคริปต์และชี้default-commandไปที่สคริปต์นั้นแทน ด้วยการกำหนดค่านั้นชื่อหน้าต่างเริ่มต้น (สำหรับ windows ที่สร้างขึ้นโดยไม่มีคำสั่งที่ชัดเจน) จะเป็นสิ่งที่คุณตั้งชื่อเชลล์สคริปต์

มิฉะนั้นมีหลายวิธีในการตั้งชื่อ / เปลี่ยนชื่อหน้าต่างด้วยตนเอง:

  • ณ เวลาที่สร้างด้วย-n:

    new-window -n 'some name'
    

    คุณสามารถผูกใหม่c(คีย์เริ่มต้นที่ใช้ในการสร้างหน้าต่าง) เพื่อรวม“ ชื่อเริ่มต้น” ที่คุณเลือก:

    bind-key c new-window -n 'default name'
    
  • เปลี่ยนชื่อหน้าต่างที่มีอยู่:

    rename-window 'new name'
    

    นอกจากนี้ยังมีการผูกค่าเริ่มต้น (คำนำหน้า,) ที่จะให้คุณใส่ชื่อใหม่และเปลี่ยนชื่อหน้าต่าง

  • เปลี่ยนชื่อหน้าต่างผ่านทาง "ลำดับหนี" ส่งไปยัง tty ของบานหน้าต่าง:

    # E.g. in a shell:
    printf '\033kWINDOW_NAME\033\\'
    

“ ให้ฉันขอชื่อสำหรับหน้าต่างใหม่” ของคุณสามารถทำได้เช่นนี้ (พร้อมท์ก่อนหรือหลังการสร้างหน้าต่าง):

bind-key C command-prompt -p "Name of new window: " "new-window -n '%%'"

bind-key C new-window \; command-prompt -p "Name for this new window: " "rename-window '%%'"

2
ว้าวนี่เป็นคำตอบที่ยอดเยี่ยมจริงๆขอบคุณมาก! :)
js-coder

7
ผมพบว่าวิธีการตั้งค่าชื่อเริ่มต้นที่: ตั้งชื่อเริ่มต้นของset-option -g default-command "tmux rename-window base; reattach-to-user-namespace -l zsh" baseคุณอาจต้องการเพิ่มสิ่งนี้ในคำตอบของคุณ :)
js-coder

โซลูชันของคุณแบ่งผู้จัดการ tmux เช่น tmuxinator ในกรณีนั้นแท็บจะไม่ถูกเปลี่ยนชื่อ
SystematicFrank

4

tmux เลือกคำสั่งแรกเป็นชื่อหน้าต่าง

สมมติว่าคุณต้องการให้ "i" เป็นชื่อเริ่มต้นคุณสามารถหลอกลวงได้เช่นนี้

set-option -g default-command "i > /dev/null 2>&1; reattach-to-user-namespace -l bash"

มันดีกว่า

set-option -g default-command "tmux rename-window i; reattach-to-user-namespace -l bash"

เนื่องจากถ้าคุณสร้างบานหน้าต่างหลังจากคุณตั้งชื่อหน้าต่างด้วยตัวเองชื่อจะถูกเปลี่ยนชื่อกลับเป็น "i" อีกครั้ง


1

นอกจากคำตอบของ Chris ในการตั้งค่าชื่อหน้าต่างโดยใช้new window -n 'somename'คุณสามารถให้สตริงว่าง''เป็นชื่อของหน้าต่าง ด้วยวิธีนี้ฉันสามารถใช้ทางลัดเริ่มต้น (คำนำหน้า + c) และไม่จำเป็นต้องมีชื่อสำหรับหน้าต่างชั่วคราว แต่ยังสามารถเปลี่ยนชื่อพวกเขาเมื่อจำเป็น:

bind-key c new-window -n ''


1

ไม่ใช่คำตอบที่แท้จริงมากกว่าแฮ็ค:

ฉันสร้าง symlink ด้วย

sudo ln -s /usr/local/bin/reattach-to-user-namespace /usr/local/bin/pbash

และตอนนี้มันแสดงให้เห็นว่าpbashเป็นชื่อเริ่มต้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.