tmux - एक निर्दिष्ट स्थान पर एक खिड़की डालें


14

tmux में "मूव-विंडो" कमांड है जिसके साथ आप विंडो को निर्दिष्ट खाली इंडेक्स में स्थानांतरित कर सकते हैं जैसे:

move-window -t 3

हालाँकि, यदि इंडेक्स 3 पहले से ही लिया गया है तो आप अपनी वर्तमान विंडो को स्थिति 3 पर नहीं ले जा पाएंगे।

मैं एक विकल्प की तलाश कर रहा हूं जो मुझे स्थिति 3 पर मेरी विंडो को स्थानांतरित करने (सम्मिलित) करने की अनुमति देगा, भले ही यह पहले से ही लिया गया हो और फिर अन्य बाद की खिड़कियों के लिए विंडो संख्या बढ़ाएं (उदाहरण के लिए जो मूल रूप से 3 पर था, वह अब होगा 4 हो, निम्नलिखित 5 होंगे)

tmux 

जवाबों:


2

नीचे दी गई स्क्रिप्ट आपको वह करने की अनुमति देगी जो आप चाहते हैं। आप इसे शेल प्रॉम्प्ट से चला सकते हैं या आप कर सकते हैं:

:run "ins-move 2 5"

वह उदाहरण विंडो पांच को विंडो पांच से पहले स्थिति में ले जाता है।

#!/bin/bash
for ((i=$1; i<$2-1; i++))
do
    tmux swap-window -s :$i -t :$((i+1))
done

धन्यवाद! महान काम करता है - हालांकि मुझे "5 2" जैसे मामलों के लिए भी काम करने के लिए इसे अनुकूलित करना होगा। कम से कम अब मुझे पता है कि यह कैसे किया जाता है।

@Andrei: मुझे खुशी है कि मैं आपको आरंभ करने में सक्षम था। जब आप उचित समझें तो स्वीकार किए गए उत्तर और अपवोट चिह्नित करना न भूलें।
अगली सूचना तक रोक दिया गया।

मैंने अभी-अभी आपके उत्तर को गलत बताया। इससे पहले ऐसा नहीं किया जा सकता था क्योंकि मुझे अभी काफी प्रतिष्ठा अंक मिले थे।

25

प्रयत्न: new-window -a

नई विंडो बनाते समय -a विकल्प का उपयोग नए को सिर्फ अगले इंडेक्स में सम्मिलित कर सकता है, जबकि अन्य सभी बाद की विंडो का इंडेक्स अपने आप बढ़ जाएगा।


@DennisWilliamson से बेहतर समाधान की तरह दिखता है, क्षमा करें डेनिस :-) मैं चल रहा हूं tmux 1.9a, शायद यह सुविधा पिछले संस्करणों में उपलब्ध नहीं थी।
सोनिया हैमिल्टन

बहुत बढ़िया। यकीन नहीं होता कि मैं कैसे चूक गया। आपने मुझे अतीत में 4 साल तक बचाया, समय यात्री! धन्यवाद!
पुराना।

यदि आप इंडेक्स 0.
nccc

1

मुझे बाहरी स्क्रिप्ट की आवश्यकता के बिना एक समाधान मिला है। अपने .tmux.conf में निम्नलिखित डालें:

bind i command-prompt -p 'Insert window at:' 'run-shell "if tmux select-window -t %1; then tmux new-window -a; tmux swap-window -s %1 -t \$((%1+1)); else tmux new-window; tmux move-window -t %1; fi; tmux select-window -t #I; tmux select-window -t %1;"'

[PREFIX] -i दबाएँ और वांछित स्थान डालें। अंतिम 2 चुनिंदा-विंडो कमांड यह सुनिश्चित करते हैं कि 'पिछली' विंडो उम्मीद के मुताबिक सेट हो और आप सम्मिलित विंडो पर जाएं।

संपादित करें: ठीक है, मैंने बहुत जल्द बात की। मैं बदलना पड़ा #Iकरने के लिए #{window_id}क्योंकि खिड़की सूचकांक प्रविष्टि पर कुछ खिड़कियों के लिए बदल जाता है। नया फ़ंक्शन (पठनीयता के लिए नई सुर्खियों के साथ):

bind i command-prompt -p 'Insert window at:' '      \
    run-shell "                                     \
        if tmux select-window -t %1; then           \
            tmux new-window -a;                     \
            tmux swap-window -s %1 -t \$((%1+1));   \
        else                                        \
            tmux new-window;                        \
            tmux move-window -t %1;                 \
        fi;                                         \
        tmux select-window -t #{window_id};         \
        tmux select-window -t %1;                   \
    "'                                               

मैंने .tmux.conf में निम्न 2 आदेशों के माध्यम से एक सरलीकृत संस्करण का उपयोग करना शुरू किया:

 bind i command-prompt -p 'Insert window at:' 'new-window -a -t %1; swap-window -t -1'
 bind I command-prompt -p 'New window at:'    'new-window -t %1'

उपसर्ग- i विंडो x मौजूद होने पर स्थिति x पर एक नई विंडो सम्मिलित करता है, और उस एक के ऊपर एक खिडकियों को चलाता है। उपसर्ग- I स्थिति x पर एक नई विंडो बनाता है जब विंडो x मौजूद नहीं होता है।

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