मैं एक कीस्ट्रोके को कई tmux कमांड कैसे बाँध सकता हूँ?


13

विशेष रूप से मैं कुछ कमांड पूरा होने के बाद एक अधिसूचना देने की कोशिश कर रहा हूं। इसलिए, उदाहरण के लिए, यदि मैं अपनी कॉन्फ़िगरेशन फ़ाइल को फिर से लोड करता हूं, तो मैं कुछ पुष्टि करना चाहता हूं कि यह काम किया है, जो इस तरह से किया जा सकता है:

bind R source-file "$HOME/.tmux.conf" && display-message "Configuration reloaded."

यही कारण है कि , हालांकि, काम नहीं करता। और न ही किसी और चीज की कोशिश की जो मैंने एक साथ स्ट्रिंग करने के तरीकों के रूप में की थी।


1
यह \;विभाजक के रूप में मेरे लिए (डेबियन निचोड़ने पर tmux 1.3) काम करता है ।
गिल्स एसओ- बुराई को रोकना '

1
ठीक है, मैंने पाया कि \; काम करता है , और उस जवाब का सार मैंने नीचे चुना है। किसी तरह मैंने परीक्षण किया; बहुत जल्दी और निर्धारित किया कि यह काम नहीं किया। लेकिन मैं इस सवाल को यहां छोड़ रहा हूं क्योंकि यह अभी भी इस सवाल का जवाब देने के लिए कार्य करता है कि यह कैसे करना है।
इकोनॉस्टल

जवाबों:


12

आप run-shellविकल्प का उपयोग कर सकते हैं , लेकिन महत्वपूर्ण बात यह है कि कमांड को अलग करना है\;

इस मामले में, कुछ इस तरह है:

bind R source-file ~/.tmux.conf \; run-shell "echo 'Reload'"

रन-शेल शेल-कमांड
(उपनाम: रन)
एक विंडो बनाए बिना पृष्ठभूमि में शेल-कमांड निष्पादित करें। इसके पूरा होने के बाद, stdout में कोई भी आउटपुट कॉपी मोड में प्रदर्शित होता है। यदि आदेश सफलता वापस नहीं करता है, तो निकास स्थिति भी प्रदर्शित होती है।


अरे, उत्तर के लिए धन्यवाद। मैंने विशेष रूप से परीक्षण नहीं किया है, लेकिन मुझे नहीं लगता कि यह काम करेगा, क्योंकि मैंने अपने प्रश्न में कोड का परीक्षण किया था; और यह सिर्फ दूसरी कमांड नहीं बल्कि पहली थी। और मुझे नहीं पता कि रन-शेल क्यों काम करेगा लेकिन प्रदर्शन-संदेश नहीं होगा।
iconoclast

1
ठीक है, मैंने आपके समाधान का परीक्षण करने की कोशिश की है और tmux उस कमांड से जाहिरा तौर पर (हालांकि पूर्ण निश्चितता के साथ नहीं) लॉक करता रहता है। मैं कोशिश करता रहूँगा, लेकिन मुझे पूरा यकीन है कि यह काम नहीं करेगा ...
iconoclast

यह tmux 1.4 पर काम करता है। क्या "लॉकिंग अप" का मतलब "कॉपी मोड" है - जो कि डिज़ाइन द्वारा है ...
jasonwryan

ठीक है, मैं इसे काम करने के लिए मिला, बिना tmux को लॉक किए। इस सवाल के साथ मुझे छोड़ दिया कि क्यों मेरे मूल का उपयोग करने का प्रयास \ "; काम नहीं किया:
iconoclast

1
आपके उत्तर का दिल \ _ उपयोग करने का है; - रन-शैल के बारे में हिस्सा वास्तव में महत्वपूर्ण नहीं है, और मुझे लगता है कि मैंने उदाहरण के लिए जो प्रदर्शन-संदेश दिया है वह बहुत बेहतर है। इसलिए मैं अपना जवाब खान पर चुन रहा हूं, लेकिन क्या आप इस जवाब को संपादित करने का मन बनाएंगे ताकि यह अन्य लोगों को भ्रमित या भ्रमित न करे। धन्यवाद!
आइकनोकॉस्ट

4

बस अपने प्रश्न की रचना के बाद मैंने कुछ ऐसा सोचा जो काम कर सकता है। मैंने यह कोशिश की और यह काम करता है, आपको बस अपने tmux कॉन्फ़िगरेशन के लिए कई फ़ाइलों के साथ रखना होगा।

यहाँ समाधान है, विशेष रूप से क्योंकि यह आपके कॉन्फ़िगरेशन को फिर से लोड करने से संबंधित है। अपनी .tmux.conf फ़ाइल में, कुछ इस तरह से डालें:

bind R source-file "$HOME/.tmux/reload.tmux"

फ़ाइल में ~ / .tmux / reload.tmux में कुछ इस तरह से डालें:

source-file "$HOME/.tmux.conf" 
display-message "Configuration reloaded."

यह पूरी तरह से काम करता है।


1
यह वास्तव में काम करने का एकमात्र तरीका है। यहां सब कुछ सिर्फ काम नहीं कर रहा है।
lzap

वास्तव में? ... यह एक समय हो गया है क्योंकि मैंने दूसरे दृष्टिकोण का परीक्षण किया है, लेकिन मुझे आश्चर्य होगा कि अगर tmux ने इसे तोड़ दिया। यदि आपको पूरा यकीन है कि यह काम नहीं करता है, तो मैं फिर से परीक्षण करूंगा और संभवतः इस उत्तर को स्वीकार करूंगा।
आइकनोकॉस्ट

हाँ, मैं माफी माँगता हूँ, उपरोक्त जवाब वास्तव में काम करता है :-)
lzap

1

रन-शेल विधि का उपयोग आउटपुट को कॉपी बफ़र में डालता है जिसके लिए मैन्युअल रूप से क्लियरिंग की आवश्यकता होती है। एक मध्यवर्ती कॉन्फ़िगरेशन फ़ाइल का उपयोग करना दूसरी कॉन्फ़िगरेशन फ़ाइल को बनाए रखने के ओवरहेड को जोड़ता है। दोनों उत्तरों को संयोजित करना मेरे मामले में बेहतर काम करता है, क्योंकि मैं चाहता था कि संदेश जीयूआई में एक पॉप-अप संवाद बॉक्स के समान एक छोटे अंतराल के बाद गायब हो जाए, लेकिन सब कुछ एक फ़ाइल में समाहित रखें।

bind R source-file ~/.tmux.conf \; display-message "Configuration reloaded"

0

एक पैच है जो tmux के अंदर पूरी तरह से स्क्रिप्टिंग की अनुमति देता है, अपने इंटर्न को tcl भाषा संलग्न करता है।

http://ershov.github.io/tmux/

इसके अलावा, यह 'मोड' कीस्ट्रोक्स के लिए जितनी चाहें उतनी क्रियाएं निर्दिष्ट करने की अनुमति देता है।

इसका उपयोग करते हुए, आपका कोड ऐसा दिखेगा:

bind R tcl { source-file "$HOME/.tmux.conf" ; display-message "Configuration reloaded." }

या इससे भी अधिक पठनीय:

bind R tcl {
  source-file "$HOME/.tmux.conf"
  display-message "Configuration reloaded."
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.