Tmux উইন্ডোজ পুনঃক্রম করুন


21

আমি কীভাবে দক্ষতার সাথে tmux এ উইন্ডোজগুলি পুনরায় সাজাতে পারি? উদাহরণস্বরূপ, উইন্ডোজের এই সেটটি থাকা:

0:zsh  1:elinks  2:mutt  3:irssi  4:emacs  5:rss  6:htop

এর rssমধ্যে যাওয়ার জন্য elinksএবং muttশেষ পর্যন্ত আমাকে কী করতে হবে :

0:zsh  1:elinks  2:rss  3:mutt  4:irssi  5:emacs  6:htop

আমি জানিনা কীভাবে move-windowএকটি উইন্ডোটিকে এখনও অব্যবহৃত ইনডেক্সে স্থানান্তরিত করতে ব্যবহার করতে হয় এবং আমি এটি অর্জন করতে তাদের কয়েকটি সিরিজ ব্যবহার করতে পারি — তবে, সম্ভবত এটি অত্যন্ত ক্লান্তিকর।


1
এই SU Q & A- শো কি আপনার জন্য বলছি: superuser.com/questions/343572/how-do-i-reorder-tmux-windows
SLM

উত্তর:


38

swap-window সাহায্য করতে পারি:

swap-window -t -1

এটি বর্তমান অবস্থিত উইন্ডোটিকে একটি অবস্থানে বামে নিয়ে যায়।

ম্যান tmux থেকে :

swap-window [-d] [-s src-window] [-t dst-window]
             (alias: swapw)
This is similar to link-window, except the source and destination windows are swapped. 
It is an error if no window exists at src-window.

আপনি এটি একটি কীতে আবদ্ধ করতে পারেন:

bind-key -n S-Left swap-window -t -1
bind-key -n S-Right swap-window -t +1

তারপরে আপনি বর্তমান উইন্ডোর অবস্থান পরিবর্তন করতে Shift+Leftএবং ব্যবহার করতে পারেন Shift+Right


কিন্তু আমি এখনও একটি swap-windowকমান্ডের একটি সিরিজ করতে হবে (উদাহরণস্বরূপ ক্ষেত্রে তিনটি) - সঠিক?
igor

@ আইগর: হ্যাঁ অন্য উপায়, আপনি করতে পারেন swap-window -s 2 -t 5। এই অদলবদল উইন্ডো নম্বর 2 সঙ্গে উইন্ডো 5 নম্বর।
cuonglm

ডান — তবে আমি অন্য সমস্ত উইন্ডোগুলির ক্রম অক্ষত রাখতে চাই, সুতরাং একটি 'সরল' উইন্ডোজ # 2 এবং # 5 অদলবদল আমার পক্ষে তা করে না। আমি swap-windowকমান্ডটি সম্পর্কে ইতিমধ্যে অবগত ছিলাম , কিন্তু পূর্ববর্তী / পরবর্তী উইন্ডোটি লক্ষ্য করে -/ +উপসর্গ সম্পর্কে জানতাম না ।
igor

নতুন tmux সংস্করণে পরিবর্তিত আচরণের সমাধানের জন্য unix.stackexchange.com/a/525770/12497 দেখুনswap-window
স্টিভেন লু

2

গৃহীত এবং অত্যন্ত আপোভেট করা উত্তরটি সঠিক, যদিও সাম্প্রতিক টিএমাক্স সংস্করণে আচরণ স্বাপ-উইন্ডো কমান্ডটি আপনাকে একই উইন্ডোতে রাখবে না। সুতরাং এটি বরং অনিচ্ছাকৃতভাবে কাজ করে, আপনার সক্রিয় উইন্ডোটি সেই দিকে বদলে যাবে তবে আপনি একই স্লটে থাকবেন!

এই সমস্যাটি সমাধান করার জন্য, কেবল এটি অনুসরণ করার জন্য বাঁধনটি বাড়িয়ে দিন। উদাহরণস্বরূপ আমার tmux কনফিগারেশন থেকে:

bind -n C-S-Left { swap-window -t -1; previous-window }
bind -n C-S-Right { swap-window -t +1; next-window }

1

এখানে ব্যাশ ফাংশনটিতে মোড়ানো একটি ওয়ার্কিং সলিউশন রয়েছে।

list=$(tmux lsw -F '#I');                           # for shift left, could be moved inside function
list=$(tmux lsw -F '#I'); list=$(echo $list|rev);   # for shift right, list reversed
shift_tmux_window_range() {  # depend on `list`
    local started=0 beg=$1 end=$2
    for i in $list; do
        if (($i == $beg)); then
            started=1; h=$beg; tmux linkw -s $beg && tmux unlinkw -t $beg;
        elif (($i == $end)); then
            tmux movew -d -s $i -t $h; tmux movew -d -t $end; break;
        elif [ $started = 1 ]; then
            tmux movew -d -s $i -t $h; h=$i;
        fi;
    done
}

shift_tmux_window_range 5 2

বোনাস: বর্তমান সক্রিয় উইন্ডো প্রভাবিত না হলে একই উইন্ডোতে থাকুন।


উজ্জ্বল! ধন্যবাদ.
আলেকজান্ডার বার্ড

-1

তাহলে tmuxসংস্করণ 1.7 বা উচ্চতর হয়

move-window -r

অথবা

set-option -g renumber-windows on

মধ্যে .tmux.confস্বয়ংক্রিয়ভাবে করছেন, ভবিষ্যতে এ জন্য।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.