Tmux और ZSH कस्टम प्रॉम्प्ट: विंडो नाम के साथ बग


43

मैंने अपने ZSH प्रॉम्प्ट को ओह-माय-zsh के साथ अनुकूलित किया है ताकि इसे और अधिक पठनीय बनाया जा सके और अगर मैं एक रिपॉजिटरी में हूं तो git के बारे में जानकारी जोड़ें।

उदाहरण:
bob@inf [~/docs] %
bob@inf [~/src/nicest] master %(git रिपॉजिटरी में)

यह अच्छी तरह से काम करता है लेकिन मेरे पास कुछ बग हैं tmuxऔर खिड़की का नाम है। यह अभी भी गैर-ज्ञान मूल्य प्रदर्शित करता है और मैं इसे अक्षम नहीं कर सकता automatic-rename off(यह काम नहीं करता है, प्रत्येक आदेश के बाद विंडो का नाम बदल जाता है), ~/docsखिड़की के नाम के लिए पहले उदाहरण tmux उपयोग के लिए।

मुझे यकीन नहीं है कि मैं इसे कैसे ठीक कर सकता हूं, मैं अपने ज़ेड प्रॉम्प्ट को रखना चाहूंगा जैसे कि यह है, अगर बदलाव कर सकते हैं, लेकिन समझना चाहेंगे कि समस्या कहां है?

एक और उपाय इस आदेश से settile( इस जवाब से ) को फिर से परिभाषित करने का हो सकता है, लेकिन मुझे यकीन नहीं है कि इसे सही तरीके से कैसे किया जाए।

जवाबों:


76

मैंने ओह-माय-ज़श पर एक नज़र डाली और एक संभावित संदिग्ध पाया ।

जब TERM पर्यावरण चर का मान शुरू होता है screen(जो इसे स्क्रीन और tmux दोनों के अंतर्गत होना चाहिए ), यह विंडो के नाम को सेट करने के लिए स्क्रीन टर्मिनल कंट्रोल अनुक्रम का उपयोग करता है

  • (सिर्फ एक शेल प्रॉम्प्ट प्रदर्शित करने से पहले)
    वर्तमान कार्य निर्देशिका के "टिल्ड कम्प्रेस्ड" पथ के बाएं हिस्से में ( ..अंतिम 13 वर्णों के बाद या संपूर्ण पथ यदि यह 15 वर्णों से कम है)
  • (सिर्फ एक कमांड शुरू करने से पहले)
    (गिनती नहीं पहले के बारे में करने के लिए किया जा रन कमांड के "शब्द" ssh, sudoहै, और कुछ अन्य)।

ऐसा लगता है कि यह आपके लिए इस तरह से काम कर रहा है (आपने कहा था कि आपकी खिड़की का नाम बदलकर ~/docsजब आप उस निर्देशिका में थे)। यदि आप इस स्वचालित नामकरण को अक्षम करना चाहते हैं, तो आप इसे trueअपने में DISABLE_AUTO_TITLE शेल पैरामीटर सेट करके इसे पूरी तरह से अक्षम कर सकते हैं .zshrc:

DISABLE_AUTO_TITLE=true

यदि आप इसे इंटरेक्टिव शेल में सेट करते हैं, तो आप वर्तमान विंडो के नाम के लिए एक रिक्त स्ट्रिंग के साथ समाप्त हो जाएंगे, लेकिन ओह-माय-ज़श उस शेल इंस्टेंस में प्रत्येक प्रॉम्प्ट और कमांड से पहले विंडो को अपडेट करना बंद कर देगा (इसे अंदर होने की आवश्यकता है आपके .zshrcसभी नए शेल इंस्टेंसेस को प्रभावित करने के लिए)।


4
यह इतना सही जवाब है। सटीक, सूचनात्मक, संक्षिप्त और बिंदु तक। इसके अलावा, यह मूल प्रश्न ("समझ कहाँ समस्या है") का उत्तर देने के अलावा एक समाधान प्रदान करता है। यह केवल दुखद है कि जिसने भी पूछने के लिए समय लिया उसे उत्तर के रूप में चिह्नित करने से परेशान नहीं किया।
dmondark

शुक्रिया शुक्रिया शुक्रिया शुक्रिया शुक्रिया
जेज़ेन थॉमस

.zshrcसभी उपयोगकर्ताओं के लिए एक फ़ाइल कहां है ?
औरिलाबस

29

मुझे पता है कि ऊपर दिया गया उत्तर आपको एक समाधान देता है, लेकिन एक और विकल्प यह है कि आप इस विकल्प को अपने ~ / .tmux.conf में जोड़ दें।

set-option -g allow-rename off

यह एक बेहतर उपाय है क्योंकि यह केवल tmux को प्रभावित करता है।
पॉल ओलिवर

इस सेटिंग के साथ भी, ब्रेक-पेन के बाद join-pane विंडो का नाम रीसेट करता है :(
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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.