Tmux ডিরেক্টরিটি ভুলে যায় যেখানে সেশনটি তৈরি হয়েছিল


8

আমি যখন tmux- এ একাধিক সেশন তৈরি করি, পরবর্তী সেশনে প্রতিটি নতুন উইন্ডোর বর্তমান ডিরেক্টরিটি প্রথম ডিরেক্টরি হিসাবে বর্তমান ডিরেক্টরি হিসাবে সেট করা হয়।

উদাহরণ স্বরূপ:

-> cd /home/one && tmux new-session -n one\; new-window -n two
   # /home/one is the current directory for each window

-> cd /home/two && tmux new-session -n three\; new-window -n four #\; etc.
   # "/home/two" is the current directory for the window "three"
   # but for the window "four" and other created windows it is "/home/one"

পরবর্তী সেশনে প্রতিটি নতুন উইন্ডোটির জন্য সেশনটি তৈরি করা ডিরেক্টরি হিসাবে আমি কীভাবে tmux- কে বর্তমান ডিরেক্টরি সেট করতে বাধ্য করতে পারি?

tmux 1.6

zsh 4.3

উত্তর:


21

Tmux 1.9 হিসাবে ডিফল্ট-পাথ বিকল্পটি সরানো হয়েছে

ডিরেক্টরিটি খোলার জন্য ডিরেক্টরিটি খোলার জন্য আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন (নামে 'ক্লায়েন্ট' আমাকে বোঝায় যে এটি আপনার শেলের বর্তমান টিএমউक्स রান্নিন, তবে এটি সেশনগুলির মধ্যে স্যুইচ করার সময় পাথগুলি স্যুইচ করার মতো মনে হচ্ছে the একই ক্লায়েন্ট):

bind-key c  new-window -c "#{client_cwd}"

অন্যথায় বর্তমান ফলকের পথটি অনুলিপি করতে:

bind-key c  new-window -c "#{pane_current_path}"

এছাড়াও পেন_স্টার্ট_পাথ রয়েছে যা কিছু কর্মপ্রবাহের জন্য আবেদন করতে পারে।

bind-key c  new-window -c "#{pane_start_path}"

বিভক্ত উইন্ডো কমান্ডের জন্য।

bind-key % split-window -h -c "#{pane_current_path}"
bind-key '"' split-window -c "#{pane_current_path}"

1
এটা সঠিক উত্তর. বিশেষত আমার ক্ষেত্রে দ্বিতীয় বিকল্প।
মাইক রাপাদাস

অন্যদিকে, আপনার কনফিগারেশন ফাইলটি চাপানোর আগে পটভূমিসহ বর্তমান সমস্ত চলমান tmux টার্মিনালগুলি বন্ধ করতে ভুলবেন না অন্যথায় tmux নতুন কনফিগারেশন লোড করবে না।
এলোমেলোতা 2077

@ লাইটম্যানহাক আপনার পক্ষে ঠিক: উত্স ~ / .tmux.conf করতে সক্ষম হওয়া উচিত
ডেভিড সি বিশপ

1
ফলক বিভাজনের জন্য এটি সাধারণকরণের কোনও উপায়? split-window -h "#{pane_current_path}"কাজ করবে না ...
বাচ

1
@ বাচ একটি-সি দিয়ে চেষ্টা করুন। split-window -h -c "#{pane_current_path}"
ডেভিড সি বিশপ

3

আমি বুঝতে পারি যে এই প্রশ্নটি বেশ পুরানো, তবে আমি যখন উত্তরটি নিজেরাই সন্ধান করছিলাম তখন স্ট্যাকএক্সচেঞ্জের একমাত্র প্রশ্নের মধ্যে এটি উপস্থিত হয়েছিল, তাই এখানে tmux 1.8-র জন্য কীভাবে সমাধান করেছি তা এখানে।

new-windowকমান্ড লাগে -cপতাকা যে আপনার নতুন উইন্ডোতে বর্তমান ডিরেক্টরি উল্লেখ করার অনুমতি দেবে। ডিফল্টরূপে, এটি একটি খালি স্ট্রিং, যা বর্তমান পেনগুলি ওয়ার্কিং ডিরেক্টরিটিকে নতুন উইন্ডোর ডিরেক্টরি হিসাবে ব্যবহার করবে। পতাকার -মান হিসাবে একটি পাস -cকরলে নতুন উইন্ডোর ডিরেক্টরিটি সেশনটি কীভাবে খোলা হবে তা সেট করবে।

দস্তাবেজগুলির একটি অংশ এখানে দেওয়া হয়েছে:

-c specifies the working directory in which the new window is created.  It may 
have an absolute path or one of the following values (or a subdirectory):

       Empty string    Current pane's directory
       ~               User's home directory
       -               Where session was started
       .               Where server was started

এটি <PREFIX> cপ্রতিবিম্বিত করতে আপনি যদি কী-বাইন্ডিংয়ের ডিফল্ট আচরণটি পরিবর্তন করতে চান তবে আমি এখানে যা করেছি তা এখানে ~/.tmux.conf:

bind-key c   new-window -c -

0

এখানে বেশ কয়েকটি উত্তর রয়েছে: /unix/12032/create-new-window-with-current-directory-in-tmux

সংক্ষেপে:

tmux এফএকিউ থেকে, একটি অবরুদ্ধ (তবে খুব সাধারণ এবং মোটামুটি শেল স্বতন্ত্র) উপায়:

  • বর্তমান উইন্ডোর একই ডিরেক্টরিতে আমি কীভাবে একটি নতুন উইন্ডো খুলতে পারি?

একটি বিকল্প হ'ল উইন্ডোতে "টিএমইউক্স = টিএমউক্স" চালানো। তবে, এটি কেবল তখনই কাজ করে যদি কোনও কমান্ড চলমান না থাকে, যাতে আপনি কমান্ডটি ইনপুট করতে পারেন।

একটি কর্মতান্ত্রিকতা হল পরিবেশগত পরিবর্তনের মাধ্যমে tmux কে বর্তমান পথ সম্পর্কে জানানো। এটি করতে, নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

[ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD

যা বর্তমান ডিরেক্টরিটির পথে TMUXPWD_i (যেখানে আমি বর্তমান উইন্ডোর সংখ্যা) সেট করে। এই কমান্ডটি PS1 এ যুক্ত করা যেতে পারে, উদাহরণস্বরূপ:

PS1='$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#I") $PWD)\h$ '

যখন একটি নতুন উইন্ডো তৈরি করা হয়, তখন শেলটি ডিরেক্টরি পরিবর্তন করতে বলা উচিত। আপনি একটি নতুন বাঁধার সংজ্ঞা দিতে পারেন (উদাহরণস্বরূপ, যদি GNU ব্যাশ ব্যবহার করা হয়):

bind-key C-c run-shell 'tmux neww "cd $(tmux display -p "\$TMUXPWD_#I"); exec bash"'

বর্তমানে কোনও কমান্ডটি টার্মিনালে চলমান থাকলেও এই সমাধানটি কাজ করবে, তবে এটি অন্যটির সাথে সজ্জিত উইন্ডো থেকে কাজ করবে না কারণ একটি স্বাপের পরে TMUXPWD_i আপডেট হবে না। তবে, একবার নতুন প্রম্পট প্রদর্শিত হলে, TMUXPWD_i সঠিকভাবে আপডেট হয়।

কেবল আপনার জন্য উপযুক্ত হিসাবে শেলের কলগুলি প্রতিস্থাপন করুন।

এছাড়াও, স্পষ্টতই tmux- র নতুন সংস্করণগুলিতে এটি একটি কমান্ড দিয়ে সম্বোধন করেছে

tmux নতুন উইন্ডো

পুরানো সংস্করণগুলি এভাবে কাজ করার জন্য দাবি করা হয়:

কলিং

tmux neww

আপনার শেল থেকে dir tmux খুলবে।

আপনি যদি tmux- এ বর্তমান ওয়ার্কিং ডিরেক্টরি থেকে নতুন উইন্ডো বা প্যানগুলি খুলতে সক্ষম হতে চান তবে তার পরিবর্তে আপনার উচিত:

tmux সেট-অপশন ডিফল্ট-পাথ "$ PWD"


ওয়ালরাসকে সাহায্য করার চেষ্টা করার জন্য ধন্যবাদ । আমি প্রশ্নটি ইউনিক্স.স্ট্যাকেক্সচেঞ্জে দেখেছি এবং FAQ পড়ি। তবে এগুলি আমার প্রশ্নের উত্তর নয়।
শামাওক

1
দেখুন, আপনি যখন একটি নতুন অধিবেশন তৈরি করবেন তখন প্রতিটি নতুন উইন্ডো বা সেই অধিবেশনটিতে আপনি যে ফলকটি খোলেন তার বর্তমান ডিরেক্টরিটি সেই ডিরেক্টরিটি হবে যেখানে আপনি সেশনটি শুরু করবেন । এটি সত্য যদি আমি একটি একক অধিবেশন তৈরি করি। যাইহোক, যখন আমি একটি নতুন টার্মিনাল উইন্ডো খুলি এবং এটিতে আরও একটি সেশন শুরু করি তখন প্রতিটি নতুন উইন্ডোর জন্য বর্তমান কার্যক্ষম ডিরেক্টরিটি সেই ডিরেক্টরিটি হবে যেখানে আমি প্রথম সেশনটি শুরু করি তবে বর্তমানটি নয়। এটি স্পষ্টতই tmux 1.6 এ একটি বাগ আছে যেহেতু আমি এটিকে সংস্করণ ১.৩ এ ডাউনগ্রেড করেছি তখন বাগটি উপস্থিত হয়নি।
শামাওক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.