আমি কীভাবে ভিএম থেকে সিস্টেম ক্লিপবোর্ডে পাঠ্যটি অনুলিপি করতে পারি?


281

সিস্টেম ক্লিপবোর্ডে কোনও পাঠ্যের ব্লক অনুলিপি করার কোনও উপায় আছে, তাই আমি এটি অন্য প্রোগ্রামে পেস্ট করতে পারি?


12
এটি ইতিমধ্যে এসও তে জিজ্ঞাসা করা হয়েছে এবং উত্তর দেওয়া হয়েছে। আপনি সেখানে আরও এবং বিভিন্ন তথ্য পেতে পারেন।
bsmith89

1
আমি এই প্লাগইনটি ম্যাকভিম ক্রিসমোমি / ভিআইএম-সিস্টেম-অনুলিপিটিতে ব্যবহার করছি এবং এটি সত্যিই পছন্দ করি love এটা তোলে গতি সঙ্গে সত্যিই ভাল কাজ করে cpip, cpi{
Flype

2
আপনি কি সত্যিই প্রয়োজন EasyClip । এটি কেবল এটি এবং আরও অনেক কিছু করবে ...
স্কট ওয়েড

উত্তর:


320

জন্য ব্যবহারে X11 ভিত্তিক ব্যবস্থা (। অর্থাত লিনাক্স এবং অন্যান্য অধিকাংশ ইউনিক্স -একটি সিস্টেম) দুটি clipboards যা অপরের স্বাধীন আছেন:

  • প্রাথমিক - এটি অনুলিপি করা হয়েছে, এবং মাঝের মাউস বোতামের সাথে আটকানো যেতে পারে।
  • ক্লিপবোর্ড - এটি (সাধারণত) দিয়ে অনুলিপি করা হয় ^Cএবং এটি পেস্ট করা হয় ^V(এটি এমএস উইন্ডোজের মতো)।

ওএস এক্স এবং উইন্ডোজ সিস্টেমে কেবল একটি ক্লিপবোর্ড রয়েছে।

এক্স 11 সিস্টেমের জন্য এমন অনেকগুলি সরঞ্জাম রয়েছে যা আপনার জন্য এই ক্লিপবোর্ডগুলি সিঙ্ক্রোনাইজ করে; সুতরাং তারা যদি একইরূপে উপস্থিত হয় তবে আপনার মধ্যে একটি চালানো হতে পারে।

এই ক্লিপবোর্ডগুলির সাথে সম্পর্কিত ভিমের দুটি বিশেষ রেজিস্টার রয়েছে:

  • *প্রাথমিক ব্যবহার করে; স্মৃতিসম্বন্ধীয়: এস আলকাতরা হয় এস নির্বাচিত (জন্য কপি-অন এর নির্বাচিত)
  • +ক্লিপবোর্ড ব্যবহার করে; স্মৃতিচারণ: সিটিআরএল প্লাস সি (সাধারণ কীবাইন্ডের জন্য)

উইন্ডোজ ও ওএস এক্স-তে +এবং এর মধ্যে কোনও পার্থক্য নেই *, যেহেতু এই সিস্টেমে কেবলমাত্র একটি ক্লিপবোর্ড রয়েছে, এবং উভয়ই রেজিস্টার একই জিনিসকে বোঝায় (আপনি কোনটি ব্যবহার করেন তা বিবেচ্য নয়)।

আপনি এই রেজিস্টারগুলিকে যেকোন নিবন্ধক হিসাবে ব্যবহার করতে পারেন। উদাহরণস্বরূপ, প্রাইমারি ক্লিপবোর্ডটি ব্যবহার *করে yএবং pকমান্ডগুলি:

  • "*yy
  • "*p

আপনি এটি আরও সুবিধাজনক কীবাইন্ড হিসাবে ব্যবহার করতে পারেন:

noremap <Leader>y "*y
noremap <Leader>p "*p
noremap <Leader>Y "+y
noremap <Leader>P "+p

আপনি যদি সমস্ত সময় ম্যানুয়ালি উল্লেখ না করে সিস্টেমের ক্লিপবোর্ডের সাথে "স্বয়ংক্রিয়ভাবে" ইন্টারফেসটি চান, আপনি clipboardভেরিয়েবলটি সেট করতে পারেন :

  • এটি unnamedব্যবহার করতে সেট করুন *(নির্বাচনের উপর PRIMARY)
  • এটি unnamedplusব্যবহারের জন্য সেট করুন +(ক্লিপবোর্ড, ^C)

এখন, কেবল ব্যবহার করেই yyভিমের নামবিহীন নিবন্ধের পরিবর্তে pসিস্টেমের ক্লিপবোর্ডে যাবে এবং সিস্টেমের ক্লিপবোর্ডটি আটকানো হবে।

আপনি এই নিবন্ধগুলিতে ঠিক যেমন নিবন্ধের সাথে নিযুক্ত করতে পারেন let:

  • :let @+=42
  • :let @*=42

clipboardসেটিং (যেমন ফিল্টার বাদ হিসাবে) আরো কিছু অপশন আছে; তবে এগুলি বেসিক। :help 'clipboard'সম্পূর্ণ গল্পের জন্য দেখুন ;-)

gVim

আপনি যদি জিভিআইএম ব্যবহার করেন, আপনি ব্যবহার করার সময় অনুলিপি-অনুলিপি ব্যবহার করতে পারেন :set guioptions+=a
এই ব্যবহারে X11 সিস্টেম, কিন্তু (প্রাথমিক থেকে কপি) ডিফল্টরূপে সক্রিয় করা হয় না (যে কোন টেক্সট আপনার ক্লিপবোর্ডে ওভাররাইড হবে নির্বাচন হিসাবে) মাইক্রোসফট উইন্ডোজ & ওএসএক্স উপর।

না +clipboard?

এর যে +clipboardকোনও একটির কাজ করার জন্য ভিমের বৈশিষ্ট্যযুক্ত পতাকা প্রয়োজন ; আপনার ভিমে ভিমের :echo has('clipboard')মধ্যে থেকে এটি ব্যবহার করে তা পরীক্ষা করতে পারবেন (যদি আউটপুট হয় 0, এটি উপস্থিত না , যদি হয় তবে 1তা হয়), বা এর vim --versionজন্য আউটপুট পরীক্ষা করে +clipboard

বেশিরভাগ লিনাক্স ডিস্ট্রিবিউশনগুলি ডিফল্টরূপে "ন্যূনতম" ভিম বিল্ড সহ প্রেরণ করে, যা নেই +clipboardতবে আপনি সাধারণত এটি ইনস্টল করতে পারেন:

  • ডেবিয়ান এবং উবুন্টু: ইনস্টল করুন vim-gtkবা vim-gnome
  • ফেডোরা: ইনস্টল করুন vim-X11এবং ( আরও তথ্য ) এর vimxপরিবর্তে চালান ।vim
  • আর্ক লিনাক্স: ইনস্টল করুন gvim(এটি +clipboardস্বাভাবিকের vimজন্যও সক্ষম করবে )।

এছাড়াও আপনি ব্যবহার করতে পারে xclip, xcopyঅথবা xselপাঠ্যটি ক্লিপবোর্ডে অনুলিপি করা; সমাধানের জন্য নিম্নলিখিত প্রশ্নগুলি দেখুন:

, SSH

আপনি যদি এসএসএইচের মাধ্যমে এক্স 11 ফরোয়ার্ডিং সক্ষম করেন তবে আপনি রিমোট মেশিনে একটি ক্লিপবোর্ডও ব্যবহার করতে পারেন। এটি আপনার উপরের টিপটির সাথে বিশেষত কার্যকর কারণ আপনি xclipআপনার ডেস্কটপের ক্লিপবোর্ডটি অ্যাক্সেস করতে ব্যবহার করতে পারেন। আপনি যে মেশিনে ssh-ing করছেন তার ভিমটির জন্য এখনও +clipboardবৈশিষ্ট্যটির প্রয়োজন হবে ।

এটির জন্য ForwardX11Trustedসেটিংস প্রয়োজন এবং এটি কেবলমাত্র বিশ্বস্ত সার্ভারগুলির সাথে সম্পন্ন করা উচিত , কারণ এটি সার্ভারটিকে আপনার এক্স 11 সেশনে প্রায় সম্পূর্ণ নিয়ন্ত্রণ দেয়:

$ ssh -XY myhost

এই সেটিংসকে অবিচ্ছিন্ন করতে (যাতে আপনার -XYপ্রতিবার যুক্ত করার দরকার নেই ), আপনি নিজের কিছুতে এটি করতে পারেন ~/.ssh/config:

# Do **NOT** set this globally; it gives the server complete control over
# your X11 session.
Host myhost
    ForwardX11 yes
    ForwardX11Trusted yes

Neovim

নিওভিম ক্লিপবোর্ড সমর্থনটি নতুনভাবে তৈরি করেছে। বিল্ট-ইন ইন্টারফেস মুছে ফেলেছি এবং একটি সিস্টেম যে এই ধরনের মত কোনো বাহ্যিক ইউটিলিটি কল প্রতিস্থাপন করা হয়েছে xclip, xselঅথবা pbcopy/ pbpaste

এটি স্বয়ংক্রিয়ভাবে এই ইউটিলিটিগুলি গ্রহণ করে এবং সেগুলি ব্যবহার করা উচিত। OS X এর উপর pbcopy এবং pbpasteডিফল্ট দ্বারা উপলব্ধ হওয়া উচিত, লিনাক্স আপনি সম্ভবত ইনস্টল করতে চান xclip, যে হিসাবে বহুল উপলব্ধ (সেখানে আসলে দুই সংস্করণ xselসঙ্গে বেমানান পতাকা । এই সত্যিই মূঢ়)।

আরো দেখুন :help clipboardNeovim হবে।


6
ssh -Y ইঙ্গিত করে -X তাই-এক্স বাদ দেওয়া যায়।

কিছু আন্তর্জাতিক কীবোর্ডের জন্য, আপনাকে "<Space>একটি পেতে টিপতে হতে পারে "। সুতরাং সেই ক্ষেত্রে আপনাকে চাপতে "<Space>+yবা "<Space>*yঅনুলিপি করতে হবে।
আর্থার এফ

1
আমার কাছে এটি শিখার খুব আকর্ষণীয় একটি পার্শ্ব প্রতিক্রিয়া (কয়েক বছর আগে) অনুধাবন হয়েছে যা "অনেক নামকৃত নিবন্ধক নির্বাচন করতে পারে। "+যাদু নয়, এটি কেবল নিবন্ধভুক্ত +। সুতরাং উদাহরণস্বরূপ, আপনি একই সময়ে তিনটি বিষয় কপি এবং এক এক, আপনি পারবেন দ্বারা তাদের প্রতিটি পেস্ট করতে চান তাহলে "1y, "2yএবং "3yপরে এবং "1p, "2pএবং "3p। এটি অন্য যে কোনও সম্পাদকের ক্ষেত্রে সত্যই শক্তিশালী এবং অস্তিত্বহীন। আর একটি আকর্ষণীয় ব্যবহার হ'ল সঞ্চিত ম্যাক্রোগুলি। উদাহরণস্বরূপ, আপনি যদি রেকর্ড করে থাকেন qqতবে আপনি বুঝতে পারেন যে এটি ঠিক করা দরকার, আপনি এটি করতে পারেন: একটি অস্থায়ী লাইনে "qp, এটি ঠিক করতে এবং "qd
শাহবাজ

1
কেবল একটি নোট: ওএস এক্সের দুটি পৃথক ক্লিপবোর্ড রয়েছে। একটিতে সিএমডি-সি এবং সিএমডি-ভি ব্যবহার করা যায় এবং অন্যটি ইমটাস কী-বাইন্ডিংস Ctrl-K এবং Ctrl-Y ব্যবহার করে।
বলপয়েন্টবেন

3
@ শাহবাজ - সম্ভবত এই জাতীয় উদ্দেশ্যে চিঠি রেজিস্টারগুলি ব্যবহার করা আরও ভাল, যেহেতু পাঠ্য মুছে ফেলা হবে তখনই সংখ্যাযুক্ত পরিবর্তন হবে।
অশুভ

18

অন্যান্য উত্তরগুলি কীভাবে আপনার ক্লাসবোর্ডে আপনার বাফার থেকে পাঠ্য কপি করবেন cover অন্য একটি সাধারণ অপারেশন হ'ল ক্লিপবোর্ডে অন্য রেজিস্টার থেকে পাঠ্য অনুলিপি করা । উদাহরণস্বরূপ, আপনি যদি ইতিমধ্যে কিছু পাঠ্যকে "ডিফল্ট (ডিফল্ট রেজিস্টারে) ইঙ্ক করে থাকেন তবে আপনি সেই নিবন্ধটি ক্লিপবোর্ডে লোড করতে চাইতে পারেন।

আপনি এটি দিয়ে এটি করতে পারেন :let:

  • let @+=@" - ক্লিপবোর্ডে ডিফল্ট রেজিস্টার অনুলিপি করে
  • let @*=@" - এক্স 11 প্রাথমিক নির্বাচনে ডিফল্ট রেজিস্টার অনুলিপি করে ("মাউস ক্লিপবোর্ড")
  • let @+=@a- নিবন্ধ aথেকে ক্লিপবোর্ডে অনুলিপি করুন
  • প্রভৃতি

নোট করুন যে এটি সাধারণভাবে নিবন্ধকদের জন্য কাজ করে: let @a=@bঅনুলিপিগুলিতে নিবন্ধগুলি bনিবন্ধ করুন a


17

Http://vim.wikia.com / উইকি / অ্যাক্সেসিং_ও_সিস্টেম_ক্লিপবোর্ড থেকে

set clipboard=unnamedplus

এটি ডিফল্ট ভিম রেজিস্টারকে রেজিস্টারে পরিবর্তন করে +যা সিস্টেম ক্লিপবোর্ডের সাথে যুক্ত। থেকে :h clipboard-unnamedplus:

                                        clipboard-unnamedplus
unnamedplus     A variant of the "unnamed" flag which uses the
                clipboard register '+' (quoteplus) instead of
                register '*' for all yank, delete, change and put
                operations which would normally go to the unnamed
                register.  When "unnamed" is also included to the
                option, yank operations (but not delete, change or
                put) will additionally copy the text into register
                '*'.
                Only available with the +X11 feature.
                Availability can be checked with: 
                        if has('unnamedplus')

যখন ভিঙ্ক দৃষ্টান্তগুলির (প্রতিটি পৃথক টার্মিনেটর টার্মিনালে প্রতিটি) এর মধ্যে ইয়াঙ্ক এবং পেস্ট করার পরে এটি কেন আমার পক্ষে কাজ করে না?
thinwybk

আপনি যদি লিনাক্সে থাকেন এবং ভিমটি + এক্স 11 বৈশিষ্ট্যটি সংকলিত হয়েছে এবং আপনার ক্লিপবোর্ড = নামবিহীন সেট রয়েছে, তবে আপনাকে ভিমের একটি উদাহরণে একটি লাইন ইয়াঙ্ক করতে সক্ষম হবে এবং এটি অন্য কোনও উদাহরণে আটকে দিতে হবে। আপনি এটি অন্য কোনও অ্যাপ্লিকেশনে সিটিআরএল + ভি বা শিফট + ইনসার্টের সাথে আটকানোও সক্ষম হতে হবে। :versionঅন্তর্ভুক্ত বৈশিষ্ট্যগুলির তালিকায় + X11 উপস্থিত হয় কিনা তা দেখতে আপনি ভিমের মধ্যে ব্যবহার করতে পারেন । আপনি যদি 'লেনদেনে না থাকেন তবে' নামবিহীন 'বৈশিষ্ট্যটি পাওয়া যায় কিনা তাও আপনি পরীক্ষা করতে পারেন :if has('unnamedplus')⏎ echo 'yes'⏎ endif তবে আপনার নামবিহীন পরিবর্তনের পরিবর্তে আপনার নাম ব্যবহার করা উচিত।
কুইন্সি বোয়ার্স

10

যে বিল্ডগুলিতে এটি সমর্থন করে, তাদের নাম রেজিস্টার *হ'ল সিস্টেম ক্লিপবোর্ড। ভিম থেকে সিস্টেম ক্লিপবোর্ডে পাঠ্য অনুলিপি করতে, আপনি ভিজ্যুয়াল মোড ব্যবহার করে পাঠ্যটি নির্বাচন করতে পারেন, তারপরে "*yএটি সিস্টেম ক্লিপবোর্ডে অনুলিপি করতে টিপুন ।

বিপরীতে, "*pসিস্টেম ক্লিপবোর্ড থেকে ভিমে টেক্সট আটকানোর জন্য ব্যবহার করুন ।


5

আমি আপনাকে Gvim ব্যবহার করার পরামর্শ দিচ্ছি এবং এটিতে আপনার যুক্ত করুন .vimrc:

source $VIMRUNTIME/mswin.vim
behave mswin

এই জন্য সমর্থন সক্ষম CtrlC, CtrlX, CtrlVউইন্ডোজে নোটপ্যাড মত।

মনে রাখবেন, এই যেমন, কিছু অন্যান্য সাধারণ উইন্ডোজ শর্টকাট যোগ হবে CtrlSজন্য :w, CtrlAসব নির্বাচন, ইত্যাদি


0

যদি আপনার ভিএম সমর্থন না করে তবে +clipboardআপনি লিনাক্স, ম্যাক, উইন্ডোজ, টিএমউক্স, স্ক্রিন, ...


0

অন্যান্য প্রতিটি উত্তর নিবন্ধগুলি সম্পর্কিত গুরুত্বপূর্ণ বিষয়গুলি কভার করে। আমি আরও একটি জিনিস যুক্ত করতে চাই যা আমি ব্যবহার করি।

ক্লিপবোর্ডে দর্শনীয়ভাবে নির্বাচিত পাঠ্যটি সরাসরি অনুলিপি করার জন্য ভিমে একটি উপায় রয়েছে । এটি কেবল আপনার ভিএমআরসি ফাইলে রাখুন:

set guioptions+=a

এবং এর সাহায্যে যখনই আপনি দৃষ্টিভঙ্গি কোনও পাঠ্য নির্বাচন করেন এটি আপনার ক্লিপবোর্ডে অনুলিপি করা হবে। এ সম্পর্কে আরও তথ্যের জন্য,:help guioptions

বিটিডাব্লু, এটি কেবল জিভিমের জন্য।


2
guioptions+=aকার্পেটসমোকারের উত্তরেও উল্লেখ করা হয়েছে।
মুরু

@ মুরু হ্যাঁ, দুঃখিত। আমি এর আগে দেখিনি। আমি এটা দেখেছি।
দুর্গা স্বরূপ

0

ক্লিপবোর্ডে কিছু নির্দিষ্ট প্যাটার্ন রাখতে আপনি একটি বিশ্বব্যাপী কমান্ডও ব্যবহার করতে পারেন। এটি এমন পরিস্থিতিতে কার্যকর হতে পারে যেখানে আপনার কোনও ফাইলের মধ্যে তথ্য ছড়িয়ে ছিটিয়ে থাকে এবং ম্যানুয়ালি মোকাবেলা করা ত্রুটি এবং ক্লান্তির ঝুঁকিতে থাকে।

প্রথমে যে রেজিস্টারটি তথ্য পাবেন তা পরিষ্কার করুন

:let @a=""

তারপরে এটিতে প্যাটার্নযুক্ত সমস্ত লাইন অনুলিপি করুন

:g/pattern/yank A

পরিশেষে সিস্টেম ক্লিপবোর্ডে তথ্য ট্রান্সফারিং (অনুলিপি করা)

:let @+=@a

যদি আপনি ক্লিপবোর্ডে "প্যাটার্ন" যুক্ত প্রতিটি লাইন সরাসরি অনুলিপি করার চেষ্টা করেন তবে এটি কাজ করবে না কারণ ক্লিপবোর্ডে নতুন বিষয়বস্তু সংযোজন করার ক্ষমতা নেই, সুতরাং আমরা এখানে থাকা সমস্ত লাইন সঞ্চয় করতে একটি সাধারণ ভিআইএম রেজিস্টার ব্যবহার করছি প্যাটার্ন একবারে এবং তারপরে এটি ক্লিপবোর্ডে রেখে দেওয়া।

ওবিএস: এটি ব্যবহারের আগে এটি রেজিস্টারকে ক্লাইং করা প্রয়োজনীয়, এবং নিবন্ধের UPPERCASE সংস্করণ ব্যবহার আমাদের বিষয়বস্তু সংযোজন করতে দেয়, অন্যথায় এটিও কাজ করবে না।


0

যদি আপনি কীভাবে কাজ করতে হয় তা বুঝতে না পারছেন +clipboard, যা আমি কোনও কারণে করতে পারি না, তবে আপনি এটি করতে পারেন।

ধরে নিচ্ছি আপনি কেবল ফাইলের একটি বিভাগ অনুলিপি করতে চান, আমি shift+ vভিজ্যুয়াল মোডে যেতে এবং আমি যে লাইনগুলি অনুলিপি করতে চাই তা কেবল হাইলাইট করি। তাহলে আমি এই কাজ।

# Linux Wayland
:'<,'>w !wl-copy

# Linux Xorg
:'<,'>w !xclip -selection clipboard

ব্যাখ্যা

  • '<,'> - এর অর্থ আপনি কোনও পরিসর নির্বাচন করতে ভিজ্যুয়াল মোড ব্যবহার করেছেন (আপনি এটি টাইপ করেন না)
  • w !{cmd}- এর স্টিডিনে ব্যাপ্তি লিখুন cmd, আরও দেখুন:help w_c
  • wl-copyএবং xclipএমন প্রোগ্রাম যা আপনি পাঠ্যটি পাইপ করতে পারেন এবং তারা এটি আপনার সিস্টেম ক্লিপবোর্ডে যুক্ত করবে

এছাড়াও, এটি একবার আপনার ইতিহাসে আসার পরে আপনাকে আবার পুরো জিনিসটি টাইপ করতে হবে না। কেবল ভিজ্যুয়াল মোডের সাহায্যে নির্বাচন করুন, wতারপরে টাইপ করুন এবং কমান্ডটি স্বয়ংক্রিয়ভাবে সম্পূর্ণ হবে। এছাড়াও, এছাড়াও, আপনাকে ভিজ্যুয়াল মোড ব্যবহার করতে হবে না। আপনি যা চান সীমা সেট করতে পারেন।

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