พร้อมต์ Tmux และ ZSH แบบกำหนดเอง: บั๊กที่มีชื่อหน้าต่าง


43

ฉันปรับแต่งพรอมต์ ZSH ของฉันด้วยoh-my-zshเพื่อให้อ่านได้ง่ายขึ้นและเพิ่มข้อมูลเกี่ยวกับ git ถ้าฉันอยู่ในที่เก็บ

ตัวอย่าง:
bob@inf [~/docs] %
bob@inf [~/src/nicest] master %(ในที่เก็บ git)

มันใช้งานได้ดี แต่ฉันมีข้อผิดพลาดบางอย่างtmuxและชื่อหน้าต่าง มันยังคงแสดงค่าที่ไม่เหมาะสมและฉันไม่สามารถปิดการใช้งานด้วยautomatic-rename off(มันไม่ทำงานชื่อหน้าต่างเปลี่ยนหลังจากแต่ละคำสั่ง) สำหรับตัวอย่างแรก tmux ใช้~/docsสำหรับชื่อหน้าต่าง

ฉันไม่แน่ใจว่าฉันจะแก้ไขได้อย่างไรฉันต้องการเก็บ zsh ไว้เหมือนเดิมหากสามารถเปลี่ยนแปลงได้ แต่ต้องการที่จะเข้าใจว่าปัญหาอยู่ที่ไหน

วิธีแก้ปัญหาอื่นอาจจะเป็นคำสั่งกำหนดใหม่settile(จากคำตอบนี้ ) แต่ฉันไม่แน่ใจว่าจะทำอย่างไรให้ถูกวิธี

คำตอบ:


76

ผมเอามองที่ Oh-My-zsh และพบว่ามีแนวโน้มที่ผู้ต้องสงสัย

เมื่อค่าของตัวแปรสภาวะแวดล้อม TERM เริ่มต้นด้วยscreen(ซึ่งควรอยู่ภายใต้ทั้งหน้าจอและtmux ) จะใช้ลำดับการควบคุมหน้าจอเทอร์มินัลเพื่อตั้งชื่อหน้าต่างเป็น

  • (ก่อนแสดงเชลล์พรอมต์)
    ส่วนซ้ายสุดของพา ธ “ tilde ที่ถูกบีบอัด” ของไดเร็กทอรีการทำงานปัจจุบัน ( ..ตามด้วยอักขระ 13 ตัวสุดท้ายหรือพา ธ ทั้งหมดหากน้อยกว่า 15 อักขระ) และ
  • (เพียงก่อนที่จะเริ่มคำสั่ง)
    ครั้งแรกที่“คำว่า” ประมาณ-เพื่อจะเรียกใช้คำสั่ง (ไม่นับssh, sudoและอื่น ๆ ไม่กี่)

ดูเหมือนว่ามันจะทำงานได้ดีสำหรับคุณ (คุณบอกว่าหน้าต่างของคุณเปลี่ยนชื่อเป็น~/docsเมื่อคุณอยู่ในไดเรกทอรีนั้น) หากคุณต้องการที่จะปิดการใช้งานนี้เปลี่ยนชื่ออัตโนมัติคุณสามารถสามารถปิดใช้งานได้อย่างสมบูรณ์โดยการตั้งค่าพารามิเตอร์ DISABLE_AUTO_TITLE เปลือกtrueในของคุณ.zshrc:

DISABLE_AUTO_TITLE=true

หากคุณเพิ่งตั้งค่านี้ในเชลล์แบบโต้ตอบคุณจะท้ายด้วยสตริงว่างสำหรับชื่อของหน้าต่างปัจจุบัน แต่ oh-my-zsh จะหยุดอัปเดตหน้าต่างก่อนที่แต่ละพรอมต์และคำสั่งในอินสแตนซ์ของเชลล์นั้น (ต้องอยู่ใน ของคุณที่.zshrcจะส่งผลกระทบต่ออินสแตนซ์เชลล์ใหม่ทั้งหมด)


4
นี่เป็นคำตอบที่สมบูรณ์แบบ ถูกต้องให้ข้อมูลกระชับและตรงประเด็น ยิ่งไปกว่านั้นมันยังมีวิธีแก้ปัญหานอกเหนือจากการตอบคำถามเดิม ("การทำความเข้าใจว่าปัญหาคืออะไร") มันเป็นเรื่องน่าเศร้าที่ใครก็ตามที่ใช้เวลาในการถามไม่ต้องกังวลว่านี่เป็นคำตอบ
dmondark

ขอบคุณขอบคุณขอบคุณขอบคุณขอบคุณขอบคุณ
Jezen Thomas

ที่เป็น.zshrcไฟล์สำหรับผู้ใช้ทั้งหมดหรือไม่
andilabs

29

ฉันรู้ว่าคำตอบข้างต้นจะช่วยให้คุณแก้ปัญหา แต่อีกวิธีหนึ่งคือการเพิ่มตัวเลือกนี้ของคุณ ~ / .tmux.conf

set-option -g allow-rename off

นี่เป็นทางออกที่ดีกว่าเนื่องจากมีผลกับ tmux เท่านั้น
พอลโอลิเวอร์

แม้จะมีการตั้งค่านี้เข้าร่วมบานหน้าต่างตามด้วยแบ่งบานหน้าต่างตั้งชื่อหน้าต่าง :(
djsadinoff

6

ฉันพบปัญหาเดียวกันซึ่งเป็นชื่อหน้าต่างของ tmux ก็เปลี่ยนได้โดยการตั้งค่าใน. tmux.conf:

set-window-option -g automatic-rename off

ขอบคุณคำตอบของคริส ชื่อหน้าต่าง tmux ของฉันไม่ได้ถูกเปลี่ยนชื่อโดยอัตโนมัติหลังจากที่ฉันเปลี่ยน:

set -g default-terminal "screen-256color"

ไปที่:

set -g default-terminal "xterm-256color"

0

หากคุณต้องการปิดการใช้งานการเปลี่ยนชื่ออัตโนมัติเฉพาะบางหน้าต่างคุณสามารถใช้:

 set -t [WINDOW_NUMBER] automatic-rename off

ปิดการใช้งานการเปลี่ยนชื่อโดยอัตโนมัติในหน้าต่างที่ระบุในเซสชั่นอื่น:

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