मैं स्क्रीन में tmux में एक विंडो के अंदर पैन के माध्यम से कैसे साइकिल चलाऊं?


41

मैंने सोचा था कि tmux pane को विंडो में ले जाना एक ही सवाल था लेकिन ऐसा प्रतीत नहीं होता।

नियमित रूप से जीएनयू स्क्रीन का उपयोग करने से आ रहा है, मैं उसी चीजों को करने के लिए tmux की तलाश कर रहा हूं। जिन चीजों पर मैं नियमित रूप से काम करता हूं, उनमें कुछ अलग-अलग विंडो खुली होती हैं, कुछ में कुछ कोड खुले होते हैं, और कुछ टर्मिनलों की एक खिड़की से कोड का परीक्षण होता है, और कभी-कभी एक विंडो या दो अन्य चीजों के लिए। मैं स्क्रीन को लंबवत रूप से विभाजित करता हूं और अक्सर शीर्ष फलक में विम विंडो होती है और फिर नीचे वाली विंडो में अन्य विंडो में से एक होती है।

मुख्य आज्ञाएँ जो मैं उपयोग करता हूं Ctrla, Tabपैन के बीच घूमने के लिए और Ctrla, nएक फलक के भीतर खिड़कियों के बीच घूमने के लिए। उदाहरण के लिए, शीर्ष फलक में विम के साथ, मैं नीचे फलक पर स्विच करता हूं और फिर अन्य टर्मिनलों के माध्यम से घूमता हूं, जो मुझे चाहिए। स्क्रीन पूरे समय विभाजित रहती है।

समस्या मैं स्क्रीन के बराबर क्षमता नहीं मिल सकता है Ctrla, ntmux में। लगता है कि विंडोज़ स्विच करना एक फलक के अंदर काम नहीं करता है, लेकिन पूरी तरह से कूदता है। यदि स्क्रीन विभाजित है, तो केवल दो विकल्प कुछ विंडो में कूदने के लिए प्रतीत होते हैं जो विभाजित नहीं होते हैं और फिर इसे विभाजित करते हैं या एक फलक का उप-विभाजन करते हैं। न ही मैं क्या देख रहा था।

सुझाव (केवल स्क्रीन के साथ चिपके हुए)?


आपकी शब्दावली थोड़ी भ्रमित करने वाली है। में tmuxएक खिड़की कई शीशे में विभाजित किया जा सकता है। क्या आप एक कीबाइंड के साथ एक विंडो में पैन के बीच साइकिल चलाने की कोशिश कर रहे हैं?
जसोनव्रीयन

मैं उपकरणों के नामकरण का पालन करने की कोशिश कर रहा था, लेकिन मैं मानता हूं कि यह भ्रामक है। मुझे पता है कि फ़ोकस को एक फलक से दूसरे में कैसे बदलना है। मैं यह जानने की कोशिश कर रहा हूं कि लेआउट को बदले बिना किसी विशेष फलक में प्रदर्शित होने वाले चक्र को कैसे चक्रित किया जाए।
फूबार

तो सामग्री को एक फलक से दूसरे में स्थानांतरित करने के लिए? क्या आप ढूंढ रहे हैं swap-pane? यदि आप स्क्रीन का अनुकरण करना चाहते हैं Ctrl-a n, तो tmux समतुल्य है Ctrl-b n
जसोनव्रीयन

जवाबों:


28

tmux और स्क्रीन के अलग-अलग मॉडल हैं इसलिए कोई सटीक समकक्ष नहीं है।

में स्क्रीन शर्तों, एक विभाजन आप एक ही समय में एक से अधिक विंडो प्रदर्शित करने देता है। next( C-a n) विभाजन के सक्रिय भाग के माध्यम से खिड़कियां घुमाता है; यह आपको विभाजन के सक्रिय क्षेत्र के माध्यम से "छिपी" खिड़कियों को घुमाने देता है।

में tmux शर्तों, एक विभाजन एक या अधिक शीशे में एक खिड़की बिताते हैं। स्प्लिट विंडो का प्रत्येक भाग एक व्यक्तिगत फलक है, पैन को कभी भी छिपाया नहीं जाता है (यदि कोई विंडो चयनित है (दृश्यमान है) तो उसके सभी पैन भी हैं), और एक फलक का उपयोग केवल एक विंडो (फलक) के एकल विभाजन में किया जा सकता है कई विंडो में नहीं है, और यह एक ही विंडो के कई विभाजन में नहीं हो सकता है)। खिड़कियों में (या बीच में) चारों ओर पैन को स्थानांतरित करने के आदेश हैं, लेकिन स्क्रीनnext में समान तरीके से नहीं ।


आप एक समान प्रभाव की व्यवस्था करने के लिए निम्नलिखित की तरह एक बंधन का उपयोग कर सकते हैं:

bind-key C-n swap-pane -s :+.top \; rotate-window -Ut :+

आप शायद इसे अपनी ~/.tmux.confफ़ाइल में रखना चाहेंगे , लेकिन आप Prefix :इसे अपने वर्तमान सर्वर इंस्टेंस में बाँधने के बाद इसे टाइप / पेस्ट कर सकते हैं ।

बाध्यकारी का उपयोग करने के लिए, अपनी "मुख्य विंडो" चुनें, इसे विभाजित करें, "मुख्य विंडो" के तुरंत बाद एक "कंटेनर कंटेनर" विंडो बनाएं, फिर समूह में "मुख्य विंडो" में किसी भी फलक को घुमाने के लिए बाइंडिंग का उपयोग करें। फलक कंटेनर ”विंडो।

यहां बताया गया है कि आप सेटअप कैसे बना सकते हैं:

  • अपने "मुख्य विंडो" के रूप में उपयोग करने के लिए एक विंडो चुनें। इसमें आरंभ (जैसे) विम

  • अपनी "मुख्य विंडो" को दो पैन में विभाजित करें।

    जैसे Prefix "( :split-window)

    आप इस फलक को अपनी परीक्षण विंडो (या लॉग व्यूअर, या जो भी हो) के रूप में उपयोग कर सकते हैं।

  • अपनी मुख्य विंडो के तुरंत बाद एक नई विंडो ("पेन कंटेनर") बनाएं।

    जैसे Prefix c( :new-window)

    यह महत्वपूर्ण है कि कोई अन्य विंडो "मुख्य विंडो" और "पेन कंटेनर" विंडो के अनुक्रमित के बीच नहीं मिलती है ( +बाध्य कमांड में उपयोग की जाने वाली विंडो स्पेसर में "अगले उच्च क्रम वाली विंडो" का मतलब है)।

  • इस विंडो को कई पैन में विभाजित करें। तीन पैन के माध्यम से घूमने के लिए, इस विंडो को दो पैन में विभाजित करें (तीसरा फलक "मुख्य विंडो" में एक है)।

    हो सकता है कि आपको git के लिए एक शेल की आवश्यकता हो , और डेटाबेस इंटरफ़ेस चलाने के लिए एक शेल की आवश्यकता हो । इस "फलक कंटेनर" विंडो में प्रत्येक को एक अलग फलक में रखें।

  • अपने "मुख्य विंडो" पर वापस जाएं। उस फलक का चयन करें जिसे आप "घुमाना" चाहते हैं।

    आप पैन के बीच स्थानांतरित करने के लिए Prefix Up/ Down/ Left/ Rightका उपयोग कर सकते हैं ।

  • "फलक कंटेनर" विंडो में पहले फलक के साथ वर्तमान फलक को स्वैप करने के लिए बाइंडिंग को आमंत्रित करें और ("पर्दे के पीछे") "फलक कंटेनर" विंडो के अंदर पैन को घुमाएं (ताकि अगली बार जब आप बंधन को चलाएं, तो पहली कमांड "अनुक्रम में अगले" फलक के साथ स्वैप)।

    Prefix Control- - nबाइंडिंग Cn का उपयोग करते हैं, लेकिन आप इसे अपनी पसंद के अनुसार बदल सकते हैं)।

  • पैन के माध्यम से पीछे की ओर स्क्रॉल करने के लिए, आप नीचे का उपयोग कर सकते हैं:

bind-key Cp स्वैप-फलक -s: +। निचला \ _; रोटेट-विंडो -Dt: +

धन्यवाद! महान व्याख्या और आपके सुझाए गए बंधन कम से कम उस कार्यक्षमता को दोहराते हैं जो मैं देख रहा था।
फुआबर

मुझे माफ करना, एक पूर्ण आकार कैसे हो सकता है और फिर पिछली व्यवस्था में वापस स्वैप करें
MageProspero

1
@JamesAndino: tmux 1.8 में resize-pane -Z(डिफ़ॉल्ट रूप से, उपसर्ग + z के लिए) है जो अस्थायी रूप से विंडो के पूर्ण आकार के लिए एक फलक "zooms" है। 1.8 से पहले के संस्करण के लिए ऐसा करने का कोई अंतर्निहित तरीका नहीं था; अन्य ने अन्य अंतर्निहित कमांडों से स्क्रिप्टेड समाधान तैयार किए हैं (उदाहरण के लिए एसयू प्रश्न के कुछ उत्तर "मैक्सिमाइज़िंग" फलक में एक फलक )।
क्रिस जॉन्सन

ty, संकलित और भरी हुई
MageProspero

3
मेरा मानना C-b oहै कि साइकल पैन।
सैम सेलिकॉफ

39

मेरा मानना है कि क्या आप के लिए देख रहे हैं Ctrlb+ ( , , , )। वे आपको पैन के बीच स्थानांतरित करने की अनुमति देंगे।


2
मुझे क्षमा करें, लेकिन मैं बहुत स्पष्ट नहीं था। मैंने यह पता लगाया है कि पैनल से पैनल में कैसे जाना है। Tmux में Ctrl b + o स्क्रीन में Ctrl + Tab के समान कार्य करता है। मैं जो देख रहा हूँ वह स्क्रीन के Ctrl + n के बराबर कार्यक्षमता है।
फूबर

@FooBar कैसे Ctrl-b+{या के बारे में Ctrl-b+}? वह लगभग उतना ही है जितना कि मैं उस कार्यक्षमता को पा सकता हूं। फलक tmux में उसी तरह से नहीं किए गए जैसे वे स्क्रीन में संभाले जाते हैं।

मुझे अक्सर हाइलाइट किए गए फलक पर ध्यान केंद्रित करने में परेशानी होती है, कहते हैं कि मेरे पास दो पैन हैं, मैं अक्सर दबाता हूं ^b↑। फिर मैं वास्तव में हाइलाइट किए गए फलक पर कैसे ध्यान केंद्रित करूंगा कि दूसरे को शेल द्वारा कैप्चर किया जाएगा, न कि टक्स?
थोरसुमोनर

6

उपयोग करें bind -r, ताकि आप prefixअपने फलक का पता लगाने के लिए एक बार, फिर अन्य कुंजियों को एक क्रम में दबा सकें । टाइमआउट द्वारा समायोजित किया जा सकता है repeat-time। चेकman tmux

bind -r Tab select-pane -t :.+

यदि आप पसंद करते हैं hjkl,

bind -r h select-pane -L
bind -r j select-pane -D
bind -r k select-pane -U
bind -r l select-pane -R

2

यहां एक छोटा सा डिस्क है जो आपको शॉर्टकट ALT या SHIFT + एरो का उपयोग करके आइरन पैन या विंडो में जाने की अनुमति देता है। कुंजी उपसर्ग का उपयोग करने की कोई आवश्यकता नहीं है।

## NAVIGATION: ############################

# Switch panes 
# Usage: "ALT+arrow keys" (without prefix key)
# from https://gist.github.com/spicycode
bind -n M-Left select-pane -L
bind -n M-Right select-pane -R
bind -n M-Up select-pane -U
bind -n M-Down select-pane -D

# Switch windows 
# usage: "SHIFT+arrow" (without prefix key)
bind -n S-Left  previous-window
bind -n S-Right next-window

यदि आप मेरी तुलना में अधिक आलसी हैं, तो आप निम्नलिखित कोड से भी रूचि ले सकते हैं जो माउस द्वारा पैन नेविगेशन की अनुमति देते हैं। (उपयोग: कुंजी उपसर्ग + मीटर चालू करने के लिए, एम इसे बंद करने के लिए)

## MOUSE CONTROL: #########################
set -g mode-mouse off
set -g mouse-resize-pane off
set -g mouse-select-pane off
set -g mouse-select-window off

# Toggle mouse on 
bind m \
    set -g mode-mouse on \;\
    set -g mouse-resize-pane on \;\
    set -g mouse-select-pane on \;\
    set -g mouse-select-window on \;\
    display 'Mouse: ON'

# Toggle mouse off
bind M \
    set -g mode-mouse off \;\
    set -g mouse-resize-pane off \;\
    set -g mouse-select-pane off \;\
    set -g mouse-select-window off \;\
    display 'Mouse: OFF'

यह विन्यास कार्य होना चाहिए tmux 1.6 से 1.9 के लिए सुनिश्चित करने के लिए।


2

यह उत्तर आपको दो पैन देता है, जहां दोनों पैन एक ही विंडो का सेट रखते हैं, लेकिन प्रत्येक फलक स्वतंत्र रूप से खिड़कियों के बीच स्विच कर सकता है।

तीन सत्रों का उपयोग करने के लिए tmux दृष्टिकोण है :

  • पैन के लिए एक बाहरी सत्र ,
  • खिड़कियों के लिए एक आंतरिक सत्र (आप इसे एक फलक से संलग्न कर सकते हैं),
  • आंतरिक सत्र (दूसरे फलक के लिए) पर एक द्वितीयक दृश्य

हाँ यह UNIX दर्शन पागल हो गया है। आएँ शुरू करें:

# Create a session to hold the multiple windows
$ tmux new-session -s inner

    <Ctrl-b> c   to create a few windows, run some things

    <Ctrl-b> d   to detach, but leave it running

# Create a session to hold multiple panes (the view)
$ tmux new-session -s outer

    <Ctrl-b> "   to split

# Open the inner session in the current (bottom) pane
$ unset TMUX ; tmux attach -t inner

अब आप शीर्ष फलक पर जा सकते हैं और हमेशा की तरह विम खोल सकते हैं। आंतरिक सत्र (निचले फलक) में खिड़कियों के माध्यम से चक्र करने के लिए आपको उपयोग करने की आवश्यकता होगी Ctrl-b Ctrl-b nऔर p

एक तरफ: यह एक छोटा सा है लेकिन आप हमेशा बाहरी सत्र के उपसर्ग को बदल सकते हैं, जैसे Ctrl-a:

<Ctrl-b> :set-option prefix C-a

तब यह सिर्फ होगा Ctrl-b nऔर pआंतरिक खिड़कियों को देखने के लिए, और Ctrl-a oबाहरी पैन को साइकिल करने के लिए।

ठीक है, अब शीर्ष फलक में विम खोलने के बजाय, अपने आंतरिक सत्र से फिर से कनेक्ट करें। विम छोड़ो, और इस समय एक new-sessionकमांड का उपयोग करें (विशेष रूप से -tनहीं के साथ -s):

$ tmux new-session -t inner

देखा! अब आप ऊपर और नीचे दोनों पैन पर खिड़कियों के माध्यम से साइकिल चला सकते हैं।

new-session -tदूसरी बार उपयोग करने का कारण यह है कि अगर हम बस attach -tफिर से करने के लिए थे , तो ऊपर और नीचे के पैन को सिंक्रनाइज़ किया जाएगा, हमेशा एक ही विंडो दिखा रहा है, जो कि आप नहीं चाहते हैं। इस फलक को अन्य फलक से स्वतंत्र रूप से खिड़कियों के माध्यम से आगे बढ़ने के लिए, हम एक नया "दृश्य" सत्र बनाते हैं, लेकिन इसके पिछले छोर को सीधे मौजूदा सत्र से जोड़ते हैं जो खिड़कियां रखती हैं। इसे " समूहीकृत सत्र " के रूप में भी जाना जाता है । (वैसे, यह लिंक [un]link-windowसत्रों के बीच खिड़कियों को स्थानांतरित करने के लिए उपयोग करने का भी सुझाव देता है ।)

बेशक समरूपता के लिए, आप tmux new-session -t innerनीचे के फलक में भी दौड़ सकते थे , इसके बजाय attach। उस स्थिति में आप tmux के 4 उदाहरण (सर्वर के लिए एक और tmux प्रक्रिया) चला रहे होंगे!


0

निम्नलिखित कोड अपने में रखें .tmux.conf:

# cycle prev/next pane
bind -n S-right select-pane -t :.+
bind -n S-left select-pane -t :.-

कॉन्फ़िगरेशन को फिर से लोड करें, तो आप दक्षिणावर्त दिशा में पैन को चक्र करने के लिए Shift+ (बिना उपसर्ग के) सीधे दबा सकते हैं , और Shift+ उलट दिशा में चक्र करने के लिए।

Tmux 2.8 में परीक्षण किया गया।


यदि आप कॉन्फ़िगरेशन को संपादित नहीं करना चाहते हैं, तो prefix+ oदक्षिणावर्त चक्र के लिए डिफ़ॉल्ट कुंजी बाइंडिंग है। मुझे कभी-कभी यह कुंजी बाध्यकारी लगती है, तो मुझे इसकी आज्ञा मिलती है tmux list-keysऔर इसे अपने स्वयं के प्रमुख बाइंडिंग के लिए उपयोग करता हूं:

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