একাধিকবার আটকান


96

ক্লিপবোর্ডের বিষয়বস্তু সহ একাধিক লাইন প্রতিস্থাপন করার সর্বোত্তম উপায় কী?

আমার সমস্যাটি হ'ল যখন আমি একটি লাইন ইয়েঙ্ক করি এবং এটি অন্য লাইনের উপর পেস্ট করি তবে "ইয়াঙ্ক" আমি কেবল যে প্রতিস্থাপন করি তার সাথে প্রতিস্থাপন করা হয়। এখন, যদি আমি একই লাইনের সাথে অন্য একটি লাইন প্রতিস্থাপন করতে চাই তবে আমাকে আবার ফিরে যেতে হবে এবং এটি আবার ইঙ্ক করতে হবে।

এটি করার আরও ভাল উপায় হতে পারে।

উত্তর:


110

আমার .vimrc এ এটি আছে:

xnoremap p pgvy

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


29
চতুর। 'পি' পেস্ট করতে, 'gv' মূলত যা নির্বাচিত হয়েছিল তা পুনরায় নির্বাচন করতে। 'y' আবার এটি অনুলিপি করতে।
আমজিথ

@ সিবসগাম্বলিং, সম্ভবত ভিম 7 এর পূর্বে কোনও সংস্করণ ব্যবহার করছেন? তারপরে হয় Vim আপগ্রেড করুন, অথবা x ( vnoremap) এর পরিবর্তে v ব্যবহার করুন । ভিম সহায়তা ফাইলের version7.txtবিবরণে xmap এবং smap সেই সংস্করণে উপস্থিত হয়েছিল।
বেনোইট

4
@Benoit হুম, আমি 7.4.52 আছে, কিন্তু তন্ন তন্ন xnoremapনা vnoremapকাজ
Sibbs জুয়া

8
কেন এটি ডিফল্ট আচরণ নয় ??
শেঠ

27

"0আপনার ইয়াঙ্কের বিষয়বস্তু থাকা উচিত। এটি টাইপ করতে কিছুটা ক্লান্তিকর, তবে "0pআপনার যা করা উচিত তা করা উচিত।

বিকল্পভাবে, পুরানো লাইনগুলি সামনে সামনে নির্বাচন এবং প্রতিস্থাপন করবেন না। আপনি একটি অনুসন্ধান যাদের লাইন খুঁজে পান, তাহলে শুধু আঘাত n.বহুবার (ইনিশিয়াল পর p), তারপর যখন তারা সব আটকানো করছি, না nddঅনেক হিসাবে অনুসৃত n.প্রয়োজনীয় হিসাবে সে।

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


4
এমন জায়গার মতো শব্দ যেখানে কনফার্ম :%s/.../.../gcটাইপ কমান্ডগুলির সাথে
রেইগেক্স

@ মিলিমিট্রিক +1 জানেন না যে আপনি এটির মতো নিশ্চিত করতে পারেন।

4
উত্সাহ দেওয়া কারণ ম্যাক্রোগুলি এটি একটি নন-ইস্যু করতে পারে। কেবল একবার সম্পাদনা করুন, এবং আপনি 5@m(নামের মতো ম্যাক্রোর জন্য m) এর মতো কিছু করতে পারেন
স্কেটনার্ড

দুর্দান্ত ব্যাখ্যার জন্য ধন্যবাদ। এখন আমি xnoremap p "0pআমার। /
.Vimrc

13

আমি প্রায়শই অন্য রেজিস্ট্রি ব্যবহার করি, আপনার নামকৃত কিছু রেজিস্ট্রিতে আপনার প্রয়োজনীয় লাইনটি অনুলিপি করুন "ayএবং তারপরে সেখান থেকে পেস্ট করুন"ap


11

আপনি যখন ভিমে কোনও নির্বাচনের উপর পেস্ট করবেন তখন এটি নির্বাচনের সামগ্রীর সাথে ডিফল্ট রেজিস্টারটি প্রতিস্থাপন করবে। যদি কোনও নির্বাচনের উপর আটকানো ক্লিপবোর্ডের নিবন্ধের বিষয়বস্তুগুলি মুছে ফেলা হয় তবে খুব সম্ভবত আপনার .vimrc এ নিম্নলিখিত লাইনটি রয়েছে

set clipboard=unnamed

একটি অপশন হ'ল এটি সরান এবং স্পষ্ট ক্লিপবোর্ডের নিবন্ধ ব্যবহার করুন "+

অন্য বিকল্পটি হ'ল অন্যান্য স্পষ্টত নামযুক্ত রেজিস্টারগুলি (এজে) ব্যবহার করা। প্রথম পেস্টের পরে "cউদাহরণস্বরূপ লাইনটিকে আবার ইঙ্ক করে ফেলুন এবং তারপরে "cpসেখান থেকে পেস্ট করতে ব্যবহার করুন।


প্রকৃতপক্ষে ডিফল্ট (এখানে উবুন্টুতে) ছিল ক্লিপবোর্ড = অটোসलेक्ट; এখনও, এ পর্যন্ত সবচেয়ে মার্জিত উত্তরের জন্য ধন্যবাদ।
তোবু

8

ব্যবহার npযেখানে nসময় আপনি কত লাইন পেস্ট করতে যেমন চান তার সংখ্যা 3p3 লাইন পেস্ট হবে।


8
যখন আপনি অ-তাত্পর্যপূর্ণ রেখার উপর একই লাইনটি পেস্ট করতে চান তখন কাজ করে না।
তোবু

@ টবু কিন্তু এটি এই প্রশ্নের শিরোনামটির উত্তর দেয় 'আপনি একাধিকবার কীভাবে পেস্ট করবেন'
আইসিসি ৯7

7

অনুলিপি / পেস্ট ব্যবহার না করে প্রায়শই কোনও পাঠ্য অবজেক্ট কমান্ড ব্যবহার করা ভাল যেমন ciwঅভ্যন্তরীণ শব্দটি পরিবর্তন করা। এই পদ্ধতিটির .পুনরাবৃত্তি কমান্ডটি ব্যবহার করে সহজেই পুনরাবৃত্তিযোগ্য হওয়ার সুবিধা রয়েছে ।

  1. yiw ইয়াঙ্ক অভ্যন্তরীণ শব্দ (কার্সারের অধীনে শব্দটি অনুলিপি করুন, "প্রথম" বলুন)।
  2. ... কার্সারটিকে অন্য একটি শব্দে সরান ("দ্বিতীয়" বলুন)।
  3. ciw<C-r>0 "দ্বিতীয়" পরিবর্তন করুন, এটি "প্রথম" দিয়ে প্রতিস্থাপন করুন (এটি সিটিআরএল-আর)।
  4. ... কার্সারটিকে অন্য একটি শব্দে সরান ("তৃতীয়" বলুন)।
  5. . "তৃতীয়" পরিবর্তন করুন, এটি "প্রথম" দিয়ে প্রতিস্থাপন করুন।

4
ciw<C-r>0আমার ক্ষেত্রে কাজ করে না। ciwসন্নিবেশ মোডে পরিবর্তন হয় যেখানে <C-r>অকেজো হয়ে যায়। এর কি সহজ ব্যাখ্যা আছে?
এইটা কি টেক্সটরিটারের

@ বুশরূট <C-r>সন্নিবেশ মোডে ব্যবহার করার উদ্দেশ্যে, যেমন আপনি কীভাবে সন্নিবেশ মোড না রেখে কোনও রেজিস্টার থেকে পেস্ট করবেন V যেমন; আমি আরস্টুডিওর সাথে পরিচিত নই তবে আমি অনুমান করতে পারি যে আপনি ঠিক বলেছেন এবং তারা এই বিশেষ কী বাঁধাই প্রয়োগ করেনি।
পোকামাকড়

@ সান এইচ: হ্যাঁ তারা কী বাইন্ডিং কার্যকর করেনি। এটি ভিআইএম এবং এমনকি অন্যান্য প্রোগ্রামগুলিতে ভিআইএম বাইন্ডিংয়ের সাথেও কাজ করে (যেমন ভিজ্যুয়াল স্টুডিও কোড)।
বুশরূট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.