ক্লিপবোর্ডে একটি বাফার অনুলিপি করতে টিএমউক্স পাচ্ছেন


118

আমি আমার ক্লিপবোর্ডে টিএমউক্স বাফারে যা আছে তা অনুলিপি করার জন্য একটি শালীন উপায় বের করার চেষ্টা করছি। আমি বিভিন্ন ধরণের বিভিন্ন জিনিস চেষ্টা করেছি

bind-key p select-pane -t 2 \; split-window 'xsel -i -b' \; paste-buffer

যা আমাকে মোটামুটি কাছে পেয়েছে, আমি উপসর্গ-পি করার পরে আমাকে যা করতে হবে তা হ'ল কন্ট্রোল-ডি।

আমি সেটা করে ঠিক করার চেষ্টা করেছি

bind-key p select-pane -t 2 \; split-window 'xsel -i -b << HERE\; tmux paste-buffer\; echo HERE'

কিন্তু এটি ঠিক কাজ করে না। আসলে আমি যদি এটি যুক্ত করে নিই

bind-key p select-pane -t 2 \; split-window 'xsel -i -b << HERE'

এটি কিছুই করে না তাই আমি ধরে নিচ্ছি যে শেল কমান্ডে << বিভক্ত উইন্ডোটি << পছন্দ করে না।

কোন ধারনা?

সম্পাদনা করুন: আপনি চাইলে আপনি এড়িয়ে যেতে select-pane -t 2পারেন, এটি আসলে গুরুত্বপূর্ণ নয়। আমি কেবল একটি নির্দিষ্ট লেআউট ব্যবহার করি এবং ফলক 2 হ'ল আমি যখন অন্য কোনও কাজ করার সময় বিভাজন করতে পছন্দ করি যা ডিফল্টরূপে বিভক্ত হয়ে ওঠার সাথে জড়িত আমার বাইন্ডিংগুলিতে যায়।


2
নীচের 2014 এর উত্তরটি দেখুন তা নিশ্চিত করুন, যা অন্য কয়েকটির চেয়ে সাম্প্রতিক। এটি tmux yank প্লাগইনটি সুপারিশ করে যা খুব ভালভাবে কাজ করে।
dmonopoly

Tmux 2.4 (এপ্রিল 2017 প্রকাশিত) এর সাথে আপ-টু-ডেট উত্তর এবং ২. see আমার উত্তর দেখুন
জেসন অ্যাক্সেলসন

উত্তর:


26

এখানে নথির নতুন লাইনের প্রয়োজন। উদাহরণস্বরূপ, একটি শেল স্ক্রিপ্টে, আপনি লিখতে পারেন

cat <<EOF >somefile; echo  done
file contents
EOF

আমার মনে হয় না tmux আপনাকে সেখানে নতুন লাইন স্থাপন করতে দেয়, এবং এটি করা হলেও এটি ভাল পন্থা হবে না। যদি ডেটা নিজেই HEREকোনও লাইনে থাকে (যেমন আপনি নিজের অনুলিপি করছেন তাই .tmux.conf)?

আমি অস্থায়ী ফাইলে বাফার সামগ্রীগুলি লেখার পরামর্শ দিই। অপরীক্ষিত:

bind-key p save-buffer ~/.tmux-buffer \; run-shell "xsel -i -b <~/.tmux-buffer && rm ~/.tmux-buffer"

আপনি যদি দুটি পৃথক tmux দৃষ্টান্তে এই কমান্ডটি ব্যবহার করেন তবে একটি রেসের শর্ত রয়েছে। আমি কীভাবে এটি সমাধান করতে জানি না।


ধন্যবাদ পুরোপুরি কাজ করে, দৌড়ের অবস্থাটি আমার পক্ষে উদ্বেগের বিষয় নয়, আমি কেবলমাত্র 1 টি সেশন ব্যবহার করি।
ডিজিটাল শক্তি

প্রতিযোগিতার শর্ত এড়াতে, আমি mktempযা ব্যাপকভাবে উপলভ্য তা ব্যবহার করার পরামর্শ দেব
দুঃখ

@ সংক্ষেপ ভাল ধারণা। এই ক্ষেত্রে, tmux প্রক্রিয়াটির PID ব্যবহার করাও কাজ করবে এবং সম্ভবত ব্যবস্থা করা সহজ হবে ( $PPIDtmux দ্বারা চালিত শেলের মধ্যে)। তবে আপনি কীভাবে ভেরিয়েবল ফাইলের নামটি (তবে এটি নির্মিত) এর যুক্তিতে পাবেন save-buffer? আমি save-buffer - | …মত Grauwolf এর উত্তর , যা পুরাপুরি একটি অস্থায়ী ফাইল সঙ্গে দূরে না?
গিলস

তুমি সঠিক, আমার দোষ, এটা সম্ভব হবে না।
দুঃখ

93

এই কাজ করা উচিত:

# move x clipboard into tmux paste buffer
bind C-p run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer"
# move tmux copy buffer into x clipboard
bind C-y run "tmux save-buffer - | xclip -i"

1
সুতরাং এটা করে। এটি একটি অস্থায়ী ফাইল ব্যবহারের চেয়ে অনেক সুন্দর, ধন্যবাদ। এমনকি এটি স্বয়ংক্রিয়ভাবে একাধিক সমবর্তী সেশনগুলির সাথে কপি করে, TMUXপরিবেশের ভেরিয়েবলের জন্য ধন্যবাদ ।
গিলস

22
এর জন্য আরও ভাল নির্দেশিকা হ'ল C-p: bind C-p run "xclip -o | tmux load-buffer - ; tmux paste-buffer"- কোনও উদ্ধৃতি সমস্যা বা কমান্ড লাইন সীমাবদ্ধতার সমস্যা নেই।
ডকচ্যাট

8
Tmux এর কি ক্লিপবোর্ডে নির্বাচনটি অনুলিপি করার জন্য একটি হুক আছে copy-mode?
এহতেশ চৌধুরী

1
xclip -oবিকল্পটি আমার পক্ষে কাজ করেনি তাই আমি পরিবর্তিত bind C-c run "tmux save-buffer - | xclip -selection c"\; display-message "Buffer copied to clipboard"
হয়েছি

6
প্রতিবার আমি এইভাবে অনুলিপিটি করি, tmux যে কোনও কীবোর্ড শর্টকাটগুলিতে সাড়া দেওয়া বন্ধ করে দেয়। এর কোন সমাধান?
স্ক্র্যাট

41

ম্যাক ওএস-এক্স এর জন্য একটি সহজ সমাধান

এটি অ্যালেক্সের জবাব বন্ধ করে দেয় এবং এমন স্টাফ ব্যবহার করে যা সেই সময়ে ছিল না।

আপনি যদি হোমব্রু ব্যবহার করছেন (এবং যদি আপনি না হন তবে আপনি কেন নন?) তবে আপনি কেবল এটি করতে পারেন:

brew install reattach-to-user-namespace

তারপরে আপনার ~/.tmux.conf:

set-option -g default-command "reattach-to-user-namespace -l zsh" # or bash...
bind C-c run "tmux save-buffer - | reattach-to-user-namespace pbcopy"
bind C-v run "reattach-to-user-namespace pbpaste | tmux load-buffer - && tmux paste-buffer"

Tmux থেকে বাফারটি অনুলিপি করতে (আপনার ইতিমধ্যে tmux ব্যবহার করে কিছু অনুলিপি করা উচিত ছিল) ম্যাক পেস্টবোর্ডে ব্যবহার করুন <tmux-key> Control-c। এটি এখন Command-vবা জন্য উপলব্ধ হবেpbpaste

ম্যাক পেস্টবোর্ড থেকে কিছু পেস্ট করতে, ব্যবহার করুন <tmux-key> Control-v


2
এই উত্তর চমত্কার। আমি ব্যবহার করছিলাম tmux show-bufferযার ফলে লাইন মোড়ানোর সমস্যাগুলির tmux save-buffer -সমাধান হয়েছে।
ইভেন্ট_জেআর

কী -শেষে tmux save-buffer -কি?
hekevintran

Stdout save-bufferথেকে অনুকরণ। আপনি -ফাইলের সাথে এটি প্রতিস্থাপন করতে পারেন এবং এটি এটি সেখানে সংরক্ষণ করবে save এটি আপনাকে কোনও ফাইল লেখার (এবং পরিষ্কার করার) থেকে বাধা দেয়।
ডক্যাচট

1
ওএস এক্স ১০.১০ অনুসারে ব্যবহারকারী-নেমস্পেসের সাথে পুনরায় যোগাযোগ করতে হবে। প্রায় প্রতিটি টিউটোরিয়াল এবং ডকুমেন্টেশন tmux এবং ওএস এক্স সম্পর্কিত উল্লেখ করে, কারণ কয়েক বছর আগে অনুলিপি এবং পেস্ট করা খুব সহজে সম্ভব ছিল না। আজকাল এটি (বেশিরভাগ) বাক্সের বাইরে কাজ করে।
রাফায়েল বুগাজেউস্কি

40

copy-pipeকমান্ড সংস্করণ 1.8 এর হিসাবে যোগ করা হয়েছিল। এটি tmux বাফারে একটি নির্বাচন অনুলিপি করে এবং এটি একটি কমান্ডে পাইপ করে। এখন আর প্রিফিক্স বাইন্ডিংয়ের দরকার নেই। এখানে একটি উদাহরণ:

bind -t vi-copy y copy-pipe "xclip"

# For OS X users:
bind -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy"

এখন যখন আপনি কিছু পাঠ্য নির্বাচন করেছেন copy-mode, তখন yসেই পাঠ্যটি টিএমাক্স বাফার পাশাপাশি ওএস ক্লিপবোর্ডে অনুলিপি করবেন। তবে, আপনি ক্লিপবোর্ড থেকে tmux বাফারে পাঠ্য পেতে চাইলে এটি কোনও লাভ করে না।


1
পুরোপুরি কাজ করে এবং গুচ্ছের সহজ সমাধান solution
নাসির

2
লিনাক্সের অধীনে আমার পক্ষে কাজ করে না, এটি যদিও এটি করে: unix.stackexchange.com/a/131074/13601
সেবাস্তিয়ান ব্লাস্ক

1
ওএস এক্স 10.10 হিসাবে এটি প্রদর্শিত reattach-to-user-namespaceহয় প্রয়োজনীয় নয়।
ক্রিস

এল ক্যাপ্টেনে কাজ করে
ওলেলে

2
এই আর Tmux 2.4 যা 20 এপ্রিল মুক্তি পায় 2017. পরিবর্তে আপনি ব্যবহার করতে হবে জন্য কাজ করে bind-key -T copy-mode-vi y send-keys -X copy-pipe "xclip": এবং OS X এর জন্যbind-key -T copy-mode-vi y send-keys -X copy-pipe "reattach-to-user-namespace pbcopy"
জেসন Axelson

16

আপনি tmux-yank প্লাগইন চেষ্টা করতে পারেন । এটি সরাসরি সিস্টেম ক্লিপবোর্ডে অনুলিপি সক্ষম করে (ওএস এক্স এবং লিনাক্স) এবং বর্তমান শেল লাইনের ইঙ্ক করার মতো কিছু অন্যান্য গুডি ies


7
এটি একটি দুর্দান্ত, পরিষ্কার সমাধান এবং এটি বিবেচনা করা উচিত কারণ এটি অন্যদের চেয়ে অনেক সাম্প্রতিক উত্তর। ভাগ করে নেওয়ার জন্য ধন্যবাদ!
dmonopoly

9

বিভিন্ন সমাধানের চেষ্টা করার পরে, এখানে আমার চূড়ান্ত সেটআপ রয়েছে:

# move x clipboard into tmux paste buffer
bind C-p run "xclip -o | tmux load-buffer -
# move tmux copy buffer into x clipboard
bind C-y run "tmux save-buffer - | xclip -i -selection clipboard"

শো-বাফারের পরিবর্তে সেভ-বাফার ব্যবহার করে আপনি বিভাজনে থাকাকালীন লাইন-ব্রেকগুলির সাথে প্রদর্শিত ডেটা ছাড়াই আসল ডেটা দেয়।

আমি tmux অনুলিপি-মোডে নির্বাচন / অনুলিপি শুরু করতে এটি ব্যবহার করি:

bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' copy-selection

আমার ধারণা, অনুলিপি-নির্বাচনটি 'y' কী এর সাথে একীভূত করা এবং এটি x ক্লিপবোর্ডে স্থানান্তরিত করা সম্ভব ছিল।


আপনি উভয় কমান্ড একীভূত করার চেষ্টা করছিলাম যেমন আপনি উল্লেখ করেছেন কোনও সাফল্য নেই। এটি কীভাবে করবেন সে সম্পর্কে কোনও ধারণা?
রাফায়েল ভেগা

9

এখানে একটি বিস্তৃত উত্তরের প্রয়াস।

প্রথমে একটু ইতিহাস

এই প্রশ্নটি যখন প্রথম জিজ্ঞাসা করা হয়েছিল (জুন, ২০১১) টিমাক্স থেকে ক্লিপবোর্ডে পাঠ্য অনুলিপি করার জন্য একটি দ্বি-পদক্ষেপ প্রক্রিয়া হতে হয়েছিল, প্রথমে নির্বাচিত পাঠ্যটি টিমাক্সের বাফারে অনুলিপি করুন, তারপরে টমাক্সের বাফার থেকে পাঠ্যটি সিস্টেম ক্লিপবোর্ডে অনুলিপি করুন।

1.8 এ (মার্চ, 2013) copy-pipeকমান্ডটি যুক্ত করা হয়েছিল যা আপনাকে নির্বাচিত পাঠ্যটি সরাসরি সিস্টেম ক্লিপবোর্ডে (বা অন্য গন্তব্য) অনুলিপি করতে দেয়।

তারপরে ২.৪-এ (এপ্রিল, 2017) মূল পৃষ্ঠাগুলি অপ্রচলিত এই উত্তরটির অনেকগুলি রেন্ডার করে উল্লেখযোগ্যভাবে পরিবর্তন করা হয়েছিল।

মূল প্রশ্নের উত্তর দেওয়া

লিনাক্স :

bind-key C-y run-shell "tmux save-buffer - | xclip -i -r > /dev/null" \; display-message "Copied tmux buffer to selection"
bind-key C-Y run-shell "tmux save-buffer - | xclip -i -r -selection clipboard > /dev/null" \; display-message "Copied tmux buffer to clipboard"
bind-key C-p run-shell "xclip -o | tmux load-buffer - ; tmux paste-buffer"

ম্যাক :

আপনি যদি হোমব্রু ব্যবহার করছেন তবে আপনার reattach-to-user-namespaceটার্মিনালে নিম্নলিখিত কমান্ডটি চালিয়ে ইনস্টল করা উচিত :

brew install reattach-to-user-namespace

তারপরে আপনার ~ / .tmux.conf এ:

bind-key C-y run-shell "tmux save-buffer - | reattach-to-user-namespace pbcopy" \; display-message "Copied tmux buffer to clipboard"
bind-key C-p run-shell "reattach-to-user-namespace pbpaste | tmux load-buffer - ; tmux paste-buffer"

সংক্ষিপ্ত পদ্ধতি (tmux> ২.৪ এর জন্য ক্লিপবোর্ড থেকে সরাসরি কোনও নির্বাচন অনুলিপি করে কাস্ট করুন)

দ্রষ্টব্য: লিনাক্সের জন্য দুটি সংস্করণ রয়েছে কারণ লিনাক্সের একটি প্রাথমিক এবং গৌণ ক্লিপবোর্ড রয়েছে (এটি নির্বাচন হিসাবেও পরিচিত)।

লিনাক্স :

bind-key -T copy-mode-vi y send-keys -X copy-pipe "xclip -r" \; display-message "Copied to selection"
bind-key -T copy-mode-vi Y send-keys -X copy-pipe "xclip -r -selection clipboard" \; display-message "Copied to clipboard"
bind-key C-p run-shell "xclip -o | tmux load-buffer - && tmux paste-buffer"

ম্যাক :

bind-key -T copy-mode-vi y send-keys -X copy-pipe "reattach-to-user-namespace pbcopy" \; display-message "Copied to clipboard"

এই আদেশগুলি কাস্টমাইজ করা হচ্ছে

  • আপনি যদি কমান্ডটি না চান তা স্ট্যাটাস লাইনে কী করেছে তা আপনাকে জানাতে চাইলে কেবল display-message(পাশাপাশি \;এটির আগে আসবে) মুছে ফেলুন ।

  • আপনি যদি vi এর পরিবর্তে Emacs শৈলীর অনুলিপি-মোড ব্যবহার করছেন তবে যেকোন উদাহরণকে ন্যায়বিচারের copy-mode-viসাথে প্রতিস্থাপন করুনcopy-mode

  • আপনি লিনাক্স দৌড়াচ্ছে এবং আপনি ব্যবহার করতে চান তাহলে xselপরিবর্তে xclipপ্রতিস্থাপন xclip -rসঙ্গে xsel -i -pএবং xclip -oসঙ্গেxsel -o -p

  • -rমধ্যে xclip -rঐচ্ছিক, এটা গত সম্পর্কে newline সরিয়ে ফেলা হয়। আদেশগুলি অনুলিপি করার জন্য এটি কার্যকর, তারপরে আপনি এগুলি আটকালে তা তাত্ক্ষণিকভাবে কার্যকর করা হবে না।

  • আপনি যদি এসএসএইচ দিয়ে টানেলিং করে থাকেন তবে আপনার https://unix.stackexchange.com/a/354581/14252 এর সাথে পরামর্শ করা উচিত

তথ্যসূত্র:


এই আদেশটি কি bind-key C-p run-shell "xclip -o | tmux load-buffer - ; tmux paste-buffer"এখনও বৈধ? জন্যtmux>2.4
alpha_989

7

আমি অতিরিক্ত কী টিপতে পছন্দ করি না, তাই আমি আরও উচ্চাভিলাষী কিছু চেয়েছিলাম। ক্লিপবোর্ডে পাঠ্যটি অনুলিপি করতে [, ডান পাঠ্যটি হাইলাইট করুন এবং তারপরে টিপুন] দিয়ে অনুলিপি মোড প্রবেশ করুন।

এছাড়াও, টিএমউक्स নতুন রচনাগুলি অন্তর্ভুক্ত করতে পছন্দ করে যা মোড়কে দেয় (এবং মজার বিষয় হল সেই নিউলাইনগুলি ভুল জায়গায় রয়েছে! তারা স্ক্রিনে গুটিয়ে যায় এমন নয়)। সুতরাং আমি সি-] নতুন লাইনগুলি সরিয়ে অভিব্যক্তিটি অনুলিপি করতে চেয়েছিলাম।

Tmux 1.6 এ আমি চেষ্টা করেছি:

bind [ copy-mode
bind -t vi-copy ] run "tmux send-keys Enter; tmux show-buffer | xclip -i -selection clipboard;"
bind -t vi-copy C-] run "tmux send-keys Enter; tmux show-buffer | perl -pe 's/\n//' | xclip -i -selection clipboard;"

তবে এটি কার্যকর হয়নি কারণ tmux জটিল জিনিসগুলিকে vi-copy টেবিলের সাথে বেঁধে রাখতে খুশি মনে হয় না। সুতরাং আমি পরিবর্তে এটি শেষ করেছিলাম:

bind [ copy-mode \;                                                        \
    bind -n ] run                                                          \
    "tmux send-keys Enter;                                                 \
     tmux show-buffer | xclip -i -selection clipboard;                     \
     tmux unbind -n C-];                                                   \
     tmux unbind -n ]" \;                                                  \
    bind -n C-] run                                                        \
    "tmux send-keys Enter;                                                 \
     tmux show-buffer | perl -pe 's/\n//' | xclip -i -selection clipboard; \
     tmux unbind -n C-];                                                   \
     tmux unbind -n ]"

এটি অদ্ভুত জিনিসগুলির দিকে পরিচালিত করে (] বা সি-] আপনি পরের বার ব্যবহার করার সময় মজার কাজ করবেন তবে কেবল একবারেই) যদি আপনি] বা সি-] এর বাইরে অন্য কোনওভাবে অনুলিপি মোড থেকে প্রস্থান করেন। এটি আমার কল্পনা করা আরও কয়েকটি বাঁধার সাথে ঠিক করা যেতে পারে তবে আমি বেশিরভাগ সময় যা চাই তা তা করে।


stackoverflow.com/a/10954274/69663 নোট সেখানে বেঁধে কী সীমাবদ্ধতা উপর একটি সম্পর্কিত বাগ রিপোর্ট যে sourceforge.net/tracker/...
unhammer

4

আর্ক উইকিতে এটি ব্যবহার করে একটি সমাধান রয়েছে xclip:

# move tmux copy buffer into x clipboard
bind-key C-y save-buffer /tmp/tmux-buffer \; run-shell "cat /tmp/tmux-buffer | xclip"

https://wiki.archlinux.org/index.php/Tmux


2
Tmux save-bufferএকটি ভাগ করা ডিরেক্টরিতে নিরাপদে ফাইল তৈরি করে ? অন্যথায় এটি রাখা /tmpএকটি সুরক্ষা গর্ত is এর অকেজো ব্যবহার রয়েছে catএবং অস্থায়ী ফাইলটি অপসারণ অনুপস্থিত। তারপর এটি একটি ব্যাপার xselবনাম xclip, যা এখানে সমতুল্য আছে, এবং আপনি আমার (indenpendently লিখিত) সমাধান আছে।
গিলস

1
ধন্যবাদ গিলস আমি আপনার পয়েন্ট প্রতিফলিত উইকি আপডেট করব।
জেসনওয়ারিয়ান

4

ম্যাক ওএস এক্স এর সমাধান these এই দুটি পদক্ষেপ অনুসরণ করুন:

  1. ক্রিস জনসেনের কার্যকারিতা ব্যবহার করুন: https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard

  2. আপনার tmux কনফিগারেশনে এই কোড যুক্ত করুন (~ / .tmux.conf)

# paste clipboard into tmux buffer
bind v run-shell "reattach-to-user-namespace -l zsh -c 'tmux set-buffer \\"$(pbpaste)\\"; tmux paste-buffer'"
# put tmux buffer into x clipboard
bind y run-shell "reattach-to-user-namespace -l zsh -c 'tmux show-buffer | pbcopy'"


4

গ্রহণযোগ্য উত্তরের একটি সামান্য পরিবর্তিত রূপ, যা আমি রান্না করেছি।

আমি এক্স ক্লিপের primaryডিফল্ট ক্লিপবোর্ড (মাউস নির্বাচন এবং মাউস মিডল-ক্লিকগুলির সাথে একটি পেয়েছি) ছাড়াও সিস্টেম ক্লিপবোর্ড (Ctrl-C, Ctrl-V) ব্যবহার করতে পছন্দ করি । সিস্টেম ক্লিপবোর্ড নির্বাচনের জন্য আপনাকে -selection clipboardযুক্তিটি পাস করতে হবে xclip

ক্লিপবোর্ডে বাফারটি অনুলিপি করার সময়, আমি কোন বাফারটি অনুলিপি করতে চাই তা নির্বাচন করার ক্ষমতাটি আমার পছন্দ হয়। এটি ব্যবহার করে choose-bufferএবং তারপরে ব্যাফারটি যুক্ত করার পক্ষে যুক্ত করা save-bufferহয় -b %%

# Copy into clipboard
bind C-c choose-buffer "run \"tmux save-buffer -b %% - | xclip -i -selection clipboard\""
# Paste from clipboard
bind C-v run "xclip -o -selection clipboard | tmux load-buffer - ; tmux paste-buffer"
# Copy into primary
bind C-y choose-buffer "run \"tmux save-buffer -b %% - | xclip -i \""
# Paste from primary
bind C-p run "xclip -o | tmux load-buffer - ; tmux paste-buffer"

আপডেট: একরকম tmux 1.8 এবং আমার দুটি ওপেনসুএস 12.2 ইনস্টলেশন সহ, আমি যখন পাইপের উপর স্টিডিন থেকে পড়ার tmux run-shellজন্য আহবান করি তখন আমি একটি স্তব্ধ দেখি xclip। আমি পরিবর্তে xselচেষ্টা করার সিদ্ধান্ত নিয়েছি এবং এটি কাজ করে বলে মনে হচ্ছে। এগুলি ব্যবহার করে সমতুল্য কী বাইন্ডিং xsel। আমি &&আরও দৃust়তার জন্য কমান্ডগুলি পেস্টে চেইন করতাম ।

# Copy into clipboard
bind C-c choose-buffer "run \"tmux save-buffer -b '%%' - | xsel -i -b\""
# Paste from clipboard
bind C-v run "xsel -o -b | tmux load-buffer - && tmux paste-buffer"
# Copy into primary
bind C-y choose-buffer "run \"tmux save-buffer -b '%%' - | xsel -i\""
# Paste from primary
bind C-p run "xsel -o | tmux load-buffer - && tmux paste-buffer"

4

এটি আমার বরং দীর্ঘ উত্তর যা দূরবর্তী (এসএসএস) টিএমউक्स সেশন থেকে বাফারটি অনুলিপি করতে এক্সক্লিপ ব্যবহার করে দুটি বড় সমস্যার সমাধান করতে হবে:

1. দায়িত্বহীন এক্সক্লিপ

আমার জন্য @ Grauwolf এর উত্তর দিয়ে xclipকাজ করে নি (সম্পূর্ণই প্রতিক্রিয়াহীন ফলক tmux উপস্থাপনা)। আর্ক উইকির টিমাক্স পৃষ্ঠায় আমি জানতে পেরেছিলাম :

এক্সস্লিপও সে উদ্দেশ্যে ব্যবহার করা যেতে পারে, এক্সসেলের বিপরীতে এটি বর্তমান লোকেলের সাথে মানানসই কাঁচা বিটস্ট্রিম প্রিন্ট করার ক্ষেত্রে আরও ভাল কাজ করে। তবুও, এক্সক্লিপের পরিবর্তে এক্সসেল ব্যবহার করা আরও পরিষ্কার, কারণ টিএমউক্সের বাফারটি পড়ার পরে এক্সক্লিপ এসটিডিওটি বন্ধ করে না। যেমনটি, টেমাক্স জানে না যে অনুলিপিটি টাস্কটি সম্পন্ন হয়েছে, এবং এক্সক্লিপের সমাপ্তির জন্য অপেক্ষা করতে থাকে, যার ফলে tmux প্রতিক্রিয়াবিহীন করে। একটি কাজের ভিত্তি হল এক্সক্লিপের STDOUT কে / dev / নালটিতে পুনর্নির্দেশ করা

তাই বাধ্যতামূলক হওয়া উচিত:

bind-key C-y run "tmux save-buffer - | xclip -i -sel clip > /dev/null"

এখন, যদি আপনার টিএমএক্স সেশন স্থানীয় হয় তবে এটি কাজ করবে।

2. এক্সক্লিপ এক্স সাথে সংযোগ করতে অক্ষম

আপনি যদি ssh -X ওপরে tmux ব্যবহার করেন তবে এটির সরাসরি কাজ করবে না এমন বড় সম্ভাবনা রয়েছে ।

এটি কারণ শেল ভেরিয়েবলটি $DISPLAYসঠিকভাবে সেট করা দরকার।

সম্পূর্ণ সমাধান

সুতরাং আমার জন্য, সম্পূর্ণ কার্যনির্বাহী সমাধানটি আমার মধ্যে নিম্নলিখিত লাইনগুলি রাখা ~/.tmux.conf:

set-option -g update-environment "DISPLAY"
bind-key C-y run "export DISPLAY=`tmux show-env | sed -n 's/^DISPLAY=//p'`; tmux save-buffer - | xclip -i -selection clipboard >/dev/null"
# Or more concise:
bind-key C-y run "tmux save-buffer - | xclip -i -selection clipboard -d `tmux show-env | sed -n 's/^DISPLAY=//p'` >/dev/null

প্রাথমিক থেকে আটকানোর জন্য:

bind-key C-p run "xclip -d `tmux show-env | sed -n s/^DISPLAY=//p` -o | tmux load-buffer - && tmux paste-buffer"

$DISPLAYসোরিংয়ের সময় কেন সঠিকভাবে সেট করা হয় না তা আমি পুরোপুরি বুঝতে পারি না .tmux.conf, সুতরাং এ কারণেই আমাকে এটি tmux show-envএবং দিয়ে বের করতে হবে sed

আপনার যদি tmux> = 1.8 থাকে তবে আপনি এই আদেশটি এর সাথে মানিয়ে নিতে পারেন copy-pipe:

bind-key -t vi-copy y copy-pipe 'xclip -in -selection clipboard -d `tmux show-env | sed -n s/^DISPLAY=//p` >/dev/null'

/home/linux/.tmux.conf:11: invalid or unknown command: bind-key C-y run "tmux save-buffer - | xclip -i -selection clipboard -d `tmux show-env | sed -n 's[0/0] PLAY=//p'` >/dev/null
ব্যবহারকারী

@ আপনি যে sedকমান্ডটি দেখিয়েছেন তা আমি লেখার মতো নয় ... আপনি যা লিখেছেন এটি কি এটি .tmux.conf?
প্লাজমাবিন্টুরং

আমি সবেমাত্র আপনার কোড অনুলিপি করে আটকালাম।
ব্যবহারকারী

@ ব্যবহারকারী, আজব ত্রুটির অনেক উত্স হতে পারে। আপনার উদ্ধৃতি ঠিক আছে তা আগে পরীক্ষা করে দেখুন। তাহলে, আপনি কি এর সাথে পরিচিত sed? কমান্ড হওয়া উচিত: sed -n s/^DISPLAY=//p। অন্যথা, আপনি ব্যবহার করতে পারে cut: tmux show-env DISPLAY | cut -d'=' -f2। এটি আপনার টিএমউक्स সংস্করণটি পরীক্ষা করার উপযুক্তও হতে পারে।
প্লাজমাবিন্টুরং

3

আমি আমার ক্লিপবোর্ডে টিএমউক্স বাফারে যা আছে তা অনুলিপি করার জন্য একটি শালীন উপায় বের করার চেষ্টা করছি। আমি বিভিন্ন ধরণের বিভিন্ন জিনিস চেষ্টা করেছি

ইমাসিক স্টাইল বাইন্ডিংয়ের জন্য কয়েকটি আলাদা বিকল্প রয়েছে। (দ্বি-শৈলীর সমান হওয়া উচিত?) ইমাসে "কপি-নির্বাচন" করার জন্য সাধারণ বাঁধাইটি মেগাওয়াট, সুতরাং এটিএমএক্সে একই বন্ডিং থাকা খুব সুবিধাজনক হবে।

1 - আদর্শ হবে, তবে অ-কাজ করছে (tmux সীমাবদ্ধতার কারণে?)

unbind-key -t emacs-copy M-w
bind-key -t emacs-copy M-w copy-selection\; \
  run-shell "tmux save-buffer - | xsel --input --clipboard"

2 - সমঝোতা যা আমার পক্ষে ভাল কাজ করে: tmux এ ইম্যাক্স-কপির জন্য আলাদা কী-বাইন্ডিং ব্যবহার করে গ্রহণ করুন। উদাহরণস্বরূপ CMW ব্যবহার করুন। (এই বাঁধাই যা "বিশ্বব্যাপী" সংজ্ঞায়িত হবে - কেবল অনুলিপি-মোডে নয় - তবে কেবল অনুলিপি-মোডে কার্যকর)

bind-key -n C-M-w send-keys M-w\; \
 run-shell "tmux save-buffer - | xsel --input --clipboard" 

3

এই উত্তরগুলির বেশিরভাগ আমার উবুন্টু 14.04-এর জন্য zsh হিসাবে রয়েছে তেমন কার্যকর হয়নি। আমার শেলটির সাথে এর কিছু আছে কিনা তা নিশ্চিত নন, তবে অনুলিপিটির জন্য এই কৌশলটি ব্যবহার করার আমার কার্যকরী সংস্করণ এবং পেস্টের জন্য এই কৌশলটি এখানে

    bind-key -t vi-copy 'v' begin-selection
    bind-key -t vi-copy 'y' copy-pipe "xclip -sel clip -i"
    bind-key ] run-shell "xclip -sel clip -o | tmux load-buffer - ; tmux paste-buffer" 

কিছু নোট:

  • অনুলিপি-পাইপের জন্য, আমাকে আমার ক্লিপবোর্ডটি নির্দিষ্ট করা দরকার -sel clip -i। এই লাইনটি ইয়াঙ্ককে টিমাক্স বাফারের সাথে সংযুক্ত করে এবং এটি এক্সক্লিপে প্রেরণ করে।
  • আসলে এটি আটকানোর জন্য, আমাকে আবার কোন ক্লিপবোর্ডের সাথে উল্লেখ করতে হবে -sel clip -o

এটি এখন আমার vim / zsh / tmux সেটআপের জন্য সুন্দরভাবে কাজ করে।


ধন্যবাদ! -sel clip -iসমস্যা সমাধান করে যদিও, আমি বুঝতে পারি না কেন এটি পুনরায় আটকে দেওয়ার জন্য আপনাকে পুনরায় ক্লিপবোর্ড নির্দিষ্ট করতে হবে ( ]আমার জন্য মানক কাজ করে)
মে'মেলিক্স melekes

1

@ লিফের উত্তরের সংস্করণটি হ'ল:

tmux bind-key '[' run "tmux copy-mode;
tmux bind-key -n ']' run \"tmux send-keys Enter; tmux save-buffer - | xclip -i -selection clipboard;
tmux unbind-key -n ']'\";
tmux bind-key -n q run \"tmux unbind -n ']'; tmux send-keys q\";
tmux bind-key -n C-c run \"tmux unbind -n ']'; tmux send-keys C-c\""

আপনি যদি অন্য কোনওভাবে অনুলিপি মোড থেকে প্রস্থান করেন তবে এর কোনও পরিণতি নেই], উপরের কোডটি সিস্টেম ক্লিপবোর্ডে tmux পাঠ্য অনুলিপি করার জন্য tundle / tmux-yank একটি tmux প্লাগইনে মোড়ানো হয় , এটি ওএস এক্স-তে tmux> = 1.6 কে লক্ষ্য করে ts এবং লিনাক্স।


1

Tmux সংস্করণ ২.২ বা তারপরে ওএস-এক্সে নিম্নলিখিতগুলি কাজ করবে:

bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "pbcopy"
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "pbcopy"

1

আমি copyqএকটি মাল্টলাইন ক্লিপবোর্ড ম্যানেজার ব্যবহার করি । (এটি উইন্ডোজ, ওএসএক্স, লিনাক্সের সাথে কাজ করে))

  • নিম্নলিখিত লাইনগুলি যুক্ত করুন ~/.tmux.conf:

    set-window-option -g mode-keys vi
    bind C-y run 'out=`tmux save-buffer - ` && copyq add "$out"'
    
  • cygwinএখানে copyq.exeঅবস্থান দাবি করে ~/.bashrc:

    export PATH="$PATH:/cygdrive/c/Program Files (x86)/CopyQ"
    
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.