बैश प्रॉम्प्ट के लिए वर्तमान विंडो नंबर प्राप्त करें


10

मैं बैश प्रॉम्प्ट प्रदर्शित विंडो नंबर जैसे like के साथ स्टेटस बार को बदलना चाहता हूं। मुझे शेल में वर्तमान विंडो नंबर कैसे मिल सकता है?

TMUX_PANE env वैरिएबल है, दुर्भाग्य से कोई TMUX_WINDOW नहीं है।

मुझे जो निकटतम मिला वह है: tmux display-message फ्लैश करने के लिए खिड़की / फलक जानकारी, तो अंतिम पंक्ति में ले tmux show-messages और इसे पार्स करें। मैं हर बार प्रॉम्प्ट प्रदर्शित होने पर विंडो / फलक जानकारी को फ्लैश नहीं करना चाहता।

जवाबों:


13

आप उपयोग कर सकते हैं display-message -p आउटपुट को भेजने के लिए इसे आउटपुट से निकालने के लिए stdout में भेजें show-messages:

tmux display-message -p '#I'

आप इस तरह संकलित संख्या में परिवर्तित कर सकते हैं ( दे घुमा के वाक्य - विन्यास; संस्करणों के साथ परीक्षण किया गया 3.2.48 और 4.2.20):

circled_digits=$(printf %s \${$'\xEA',\`,{a..s}} | iconv -f UTF-16BE)
# circled_digits='⓪①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳'

tmux_winidx_circled() {
    local winidx=$(tmux display-message -p '#I')
    if (( winidx > 20 )); then
        echo "($winidx)"
    else
        echo "${circled_digits:$winidx:1}"
    fi
}

पहली पंक्ति में यह अच्छा है कि यह शुद्ध ASCII है; यदि आपको अपनी कॉन्फ़िगरेशन फ़ाइल में गैर-ASCII वर्ण होने का मन नहीं है, तो आप इसके बजाय दूसरी पंक्ति के साथ जा सकते हैं (यह निश्चित रूप से इरादे को और अधिक स्पष्ट करता है, यह मानते हुए कि आपका संपादक और शेल फ़ाइल की एन्कोडिंग को ठीक से संभाल सकता है)।

तो आप इसे इस तरह से उपयोग कर सकते हैं:

PS1="$(tmux_winidx_circled) \W➤ "

3

शेल शुरू करते समय और इसे स्टोर करने के लिए मुझे बस जरूरत थी tmux मैसेज को फ्लैश करने और निकालने की। डी-ओह!

tmux display-message
export TMUX_WINDOW=$(tmux show-messages | tail -1 | grep -o '\[[0-9]\] \([0-9]\)' | grep -o '[0-9]$')
PS1="$(echo $TMUX_WINDOW) \W➤ "

अब मेरा संकेत दिखता है:

[2] ~➤  

और जो कुछ बचा है वह है सुंदर यूनिकोड सर्किल किए गए अंकों के साथ नियमित अंकों को पार्स करना और बदलना - लेकिन यह एक और कहानी है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.