Tmux- এ কীভাবে বর্তমান ডিরেক্টরিতে একটি নতুন উইন্ডো তৈরি করবেন?


208

এটিতে new-windowবর্তমানে আমি যেভাবে কাজ করছি তার সাথে এটির কার্যকরী ডিরেক্টরি সেট করে একটি খুলতে পারবেন I আমি zsh ব্যবহার করছি , যদি এটি গুরুত্বপূর্ণ হয়।

উত্তর:


139

থেকে শুরু করে tmux 1.9 default-pathবিকল্প সরানো হয়েছে, তাই আপনি ব্যবহার করতে হবে -cসঙ্গে বিকল্প new-window, এবং split-window(rebinding যেমন: c, ", এবং %বাইন্ডিং অন্তর্ভুক্ত করা
-c '#{pane_current_path}')। বিশদটির জন্য এই প্রশ্নের অন্য কয়েকটি উত্তর দেখুন।


একটি প্রাসঙ্গিক বৈশিষ্ট্য ফেব্রুয়ারী ২০১২ এর গোড়ার দিকে tmux SVN ট্রাঙ্কে পৌঁছেছিল । tmux বিল্ডগুলিতে এই কোডটি অন্তর্ভুক্ত করে, tmux কী বাইন্ডিংগুলি অনুরোধ করে যে new-windowবর্তমান প্যানের সক্রিয় প্রক্রিয়াগুলির মতো একই বর্তমান ওয়ার্কিং ডিরেক্টরি সহ একটি নতুন উইন্ডো তৈরি করবে ( default-pathঅধিবেশন যতক্ষণ থাকবে) বিকল্পটি ফাঁকা; এটি ডিফল্টরূপে)। split-windowকমান্ড দ্বারা তৈরি করা ফলকের ক্ষেত্রেও একই সত্য যখন এটি একটি বাঁধার মাধ্যমে ডাকে।

এটি বিশেষ প্ল্যাটফর্ম-নির্দিষ্ট কোড ব্যবহার করে, সুতরাং এই মুহুর্তে কেবলমাত্র কয়েকটি ওএস সমর্থিত: ডারউইন (ওএস এক্স), ফ্রিবিএসডি, লিনাক্স, ওপেনবিএসডি এবং সোলারিস।

এটি tmux এর পরবর্তী প্রকাশে উপলব্ধ হওয়া উচিত (1.7?)।


সঙ্গে tmux 1.4, আমি সাধারণত ব্যবহার

tmux neww

ইতিমধ্যে পছন্দসই বর্তমান ডিরেক্টরি ডিরেক্টরি আছে যে শেল মধ্যে।

তবে, যদি আমি একই বর্তমান কার্যনির্বাহী ডিরেক্টরি সহ অনেকগুলি উইন্ডো তৈরি করার প্রয়োজন অনুমান করি (বা আমি সাধারণ <प्रीফিক্স> cকী বাইন্ডিং দিয়ে তাদের শুরু করতে সক্ষম হতে চাই ), তবে আমি default-pathসেশন বিকল্পটি এর মাধ্যমে সেট করব via

tmux set-option default-path "$PWD"

ইতিমধ্যে কাঙ্ক্ষিত বর্তমান কার্যনির্বাহী ডিরেক্টরি রয়েছে এমন শেলটিতে (যদিও আপনি অবশ্যই এটি কোনও ডিরেক্টরি থেকে করতে পারেন এবং পরিবর্তে মান নির্দিষ্ট করতে পারেন)।

যদি default-pathএকটি শূন্য-না মানকে সেট করা থাকে তবে এর মানটি বর্তমান ওয়ার্কিং ডিরেক্টরিটি হ'ল কমান্ড-লাইন অনুরোধ থেকে "উত্তরাধিকারসূত্রে" পরিবর্তে ব্যবহৃত হবে tmux neww

Tmux প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী শীর্ষক একটা এন্ট্রি আছে যা অন্য পদ্ধতির বর্ণনা "আমি বর্তমান উইন্ডো হিসাবে একই ডিরেক্টরির মধ্যে একটি নতুন উইন্ডোতে খুলবো কী করে?"; যদিও এটি কিছুটা বিশৃঙ্খলাবদ্ধ।


6
<prefix>cঅন্তর্নিহিত শেল ইনস্ট্যান্সের কার্যকরী ডিরেক্টরিটি পড়ার জন্য আমি কোনও মানচিত্র তৈরি করতে পারি (যদি থাকে) এবং default-pathকার্যকর করার পূর্বে সেট করে new-window। অথবা এটি কি খুব বেশি tmux জিজ্ঞাসা করার জন্য :)
শ্রীকান্ত শরৎ

অন্য নোটে, অন্তর্নিহিত শেলটির কার্যকরী ডিরেক্টরিটি পড়া কি সম্ভব? আমি এটি আমার স্ট্যাটাস বারে প্রদর্শন করার জন্য হত্যা করব।
শ্রীকান্ত শরৎ

2
অন্য কোনও প্রক্রিয়ার সিডব্লিউডি নিষ্কাশন করার কোনও পোর্টেবল উপায় নেই (যদিও এটি কিছু প্ল্যাটফর্মে সম্ভব (যেমন /proc/PID/cwdলিনাক্সে))। সেখানে সম্ভব আংশিক সমাধান একটি এন্ট্রি এর tmux প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী (এটা, শেল রেকর্ড তার cwd যখন এটি একটি প্রম্পট ছাপে হয়েছে তারপর একটি কী রেকর্ড ডিরেক্টরির মধ্যে একটি নতুন শেল শুরু binds)।
ক্রিস জনসন

ঠিক আছে, এটি আমার জ্ঞানের কিছুটা অবকাশ নেই এবং খুব নির্ভরযোগ্য মনে হয় না। কিছু আমাকে বলছে আমি এই সমস্ত ছাড়া ভাল হতে পারে .. যাইহোক ধন্যবাদ।
শ্রীকান্ত শরৎ

1
@ পেপারড্রয়েড: বাঁধাইয়ের মাধ্যমে যে কোনও কিছু করা হবে (ডিফল্টরূপে) tmux সার্ভারের cwd বা default-pathসেশন বিকল্পের মান (যদি সেট করা থাকে) ব্যবহার করে। Tmux প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী একটি এন্ট্রি যে একটি কী বর্তমান উইন্ডোর শেল চলমান cwd সঙ্গে একটি নতুন উইন্ডোতে শুরু বাঁধে একটি উপায় বর্ণনা আছে ( "আমি কিভাবে বর্তমান উইন্ডো হিসাবে একই ডিরেক্টরির মধ্যে একটি নতুন উইন্ডোতে খুলতে পারে?") , কিন্তু পদ্ধতিটি বেশ কনভলটেড। একই জন্য সম্ভবত split-windowএবং এর new-sessionপরিবর্তে করা যেতে পারে neww
ক্রিস জনসন

268

বর্তমান (1.9a) টিএমাক্স ম্যান পৃষ্ঠাটি -c start-directoryকিছু কমান্ডের জন্য একটি বিকল্প alচ্ছিক পরামিতি তালিকাভুক্ত করে new-windowএবং সহ split-window। এটিতে বিন্যাসের ভেরিয়েবলও রয়েছে pane_current_pathযা এটি উল্লেখ করে Current path if available

এগুলিকে একত্রিত করে, আমরা বর্তমান ওয়ার্কিং ডিরেক্টরিটি ব্যবহার করে একটি নতুন উইন্ডো খুলতে পারি
new-window -c "#{pane_current_path}"
বর্তমান পাতায় শূন্যস্থান উপস্থিত থাকলে উদ্ধৃতি প্রয়োজন।

আপনি যদি বর্তমান ফলকে উল্লম্বভাবে বিভক্ত করতে চান তবে
split-window -c "#{pane_current_path}"
অনুভূমিক বিভাজনের জন্য বা ব্যবহার করুন
split-window -h -c "#{pane_current_path}"

কী-র বাইন্ডিংগুলি ডিফল্টরূপে বর্তমান কার্যনির্বাহী ডিরেক্টরিতে নতুন বিভাজন এবং উইন্ডোগুলি খোলার জন্য, নিম্নলিখিতটি আপনারটিতে যুক্ত করুন .tmux.conf"পার্শ্ববর্তী কোট দিয়ে Tmux বলতে এটি একটি স্ট্রিং শুরু করা উচিত নয় বরং বাঁধে হয় "কী।

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

1
এটি কি tmux 1.9 এ কাজ করে না? আমি এটি প্রত্যাশিত কাজটি করতে পারি না।
এরিক গ্যারিসন

1
বাইন্ড-কী -r নতুন-উইন্ডোতে প্রবেশ করুন -c "# {পেন_সামান্য_পাথ}", tmux 2.1 এর জন্য কাজ করে
মার্সলো

5
ওএসএক্সে tmux 2.3 এ কাজ করে। এই বাইন্ডিংগুলি প্রয়োগ করা দেখতে বিদ্যমান বিদ্যমান সেশনগুলি বন্ধ / হত্যা করতে ভুলবেন না।
jmgarnier

1
@ জেগগার্নিয়ার বা প্রোফাইলটি পুনরায় উত্স করুন: prefix- :, তারপরে টাইপ করুনsource ~/.tmux.conf
আইজোসেফ

8
@jmgarnier বা শুধু tmux source-file .tmux.conf
ব্লুহিরন 21

37

হ্যাঁ, ব্যবহার new-window -c "#{pane_current_path}"~/.tmux.confএটি অবিচ্ছিন্ন করতে আপনি নিম্নলিখিতটি যুক্ত করতে পারেন (ডিফল্ট কী-বাইন্ডিংগুলি ধরে রেখে):

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

default-pathপথ অস্ত যাবার সময় মুছে যেকোন একটি ব্যবহার করে মূল প্রজেক্টের কোড এবং tmux লেখক যে কমিট বার্তায় সুপারিশ থেকে -c "#{pane_current_path}"বা -c "$PWDমধ্যে new-windowএবং split-windowকমান্ড।

আমি এই সদৃশ প্রশ্নের উত্তরও দিয়েছি ।


10

Tmux এর সাম্প্রতিক সংস্করণগুলির সাথে (v1.8, তবে সম্ভবত v1.7 এও)

tmux new-window -c "$PWD"

এটি স্প্লিট-উইন্ডোতেও কাজ করবে বলে মনে হয়, যেমনtmux split-window -v -c "$PWD"
ব্যবহারকারী 7089

3
$PWDtmux 1.9a তে আমার জন্য কাজ করতে দেখা যাচ্ছে না। pane_current_pathউপরের পরামর্শ মতো আমাকে ব্যবহার করতে হয়েছিল।
জর্ডেলভার

3

আমি যখন তাদেরকে বাইন্ডিং হিসাবে রাখার চেষ্টা করি (অন্যভাবে tmux split-window -c) অন্য উত্তরগুলি আমার পক্ষে কার্যকর হয় না । তবে আমি আমার নিজস্ব সমাধান তৈরি করেছি যা আমি এক বছরেরও বেশি সময় ধরে ব্যবহার করছি যা নতুন উইন্ডো এবং বিভক্ত উভয়ের জন্যই কাজ করে:

~/.bashrc:

PS1="$PS1"'$([ -n "$TMUX" ] && tmux setenv TMUXPWD_$(tmux display -p "#D" | tr -d %) "$PWD")'

~/.tmux.conf:

unbind-key c
bind-key c run-shell 'tmux new-window "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind-key C new-window

bind-key - run-shell 'tmux split-window -v "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"'
bind-key | run-shell 'tmux split-window -h "cd \"$(tmux show-environment $(echo "TMUXPWD_#D" | tr -d %) | sed -e "s/^.*=//")\"; exec $SHELL"

কমপক্ষে, $ (tmux -V) 1.8 দিয়ে কাজ করে। পুরানো tmuxes এর শো-এনভায়রনমেন্ট কমান্ড নেই এমন সংস্করণের জন্য এখানে মন্তব্য করা লাইনগুলি দেখুন ।


0

tmux এটি 1.8 সংস্করণে করেছে তবে 1.9-এ -cপতাকাটি ব্যবহারের পক্ষে এই বৈশিষ্ট্যটি সরানো হয়েছে ।

এটি সমাধান করা যেতে পারে তবে পুনরায় বাঁধাই করা যায় new-windowতবে আপনি অন্য কোনও কিছু চালাতে চান এটি খুব স্পষ্ট হয়ে ওঠে: টাইপের পরিবর্তে neww man tmuxআপনাকে টাইপ করতে হবে neww -c "#{pane_current_path}" man tmuxযা আপনি সম্ভবত করতে চান না।

'মোড', ভেরিয়েবল, লুপ ইত্যাদিতে একাধিক কমান্ড আবদ্ধ করার জন্য টিএমউক্সে সঠিক স্ক্রিপ্টিং ভাষা যুক্ত করার জন্য টিএমউক্সের একটি মোড আছে (আমি লেখক) এবং এছাড়াও, এটি আচরণটি ফিরিয়ে আনে : বর্তমান ডিরেক্টরিতে নতুন উইন্ডো এবং প্যানগুলি খোলা আছে।

এটি উত্স থেকে এখানে নির্মিত যেতে পারে: http://ershov.github.io/tmux/

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