সাফ নিবন্ধন ছাড়াই নির্দিষ্ট ক্রিয়াকলাপ সম্পাদন করা


30

প্রায়শই, কনফিগারেশন ফাইলগুলিতে আমি লাইনগুলির একটি ব্লক অনুলিপি করে কপি করতে পারি, তারপরে আমি সেই ব্লকে ছোট পরিবর্তন করতে চাই। আটকানোর পরে, আমি xযে অক্ষরগুলি মুছতে চাই তা মুছতে ব্যবহার করি, তারপরে পরবর্তী ব্লকটি পেস্ট করতে এগিয়ে যান। ছাড়া xরাখে ক্লিপবোর্ড এর ওপর অক্ষর মুছে ফেলা, তাই আমি আবার লাইনের ব্লক recopy করতে হবে।

Sertোকানো মোডে না গিয়ে কি এটি করার কোনও উপায় আছে?


জ্যাস্পার স্ট্যাক ওভারফ্লোতে অনুরূপ প্রশ্নগুলি খুঁজে পেয়েছে : [আপনার শেষ ইয়াঙ্কটি ওভাররাইট না করে ভিমে মুছে ফেলার কোনও উপায়? [সদৃশ]] ( স্ট্যাকওভারফ্লো.com / প্রশ্নস / ৩৩63৫৫৪৪২/২ ) এবং ভিমে কি রেজিস্টারটিতে টেক্সট না রেখে মুছার উপায় আছে?
গিলস 21'13

উত্তর:


35

আপনার বিকল্পগুলি হ'ল:

  1. ব্ল্যাকহোল রেজিস্টার ব্যবহার করুন _। উদাহরণস্বরূপ, একটি লাইন মুছতে আপনি টাইপ করবেন "_dd। ক্লিপবোর্ডকে প্রভাবিত না করে এটি মোছা হয়।
  2. স্পষ্টভাবে মূল ইয়াঙ্কের জন্য একটি নিবন্ধের নাম দিন। উদাহরণস্বরূপ, একটি নাম রেজিস্টারটিতে একটি লাইন ইঙ্ক করতে আপনি টাইপ করবেন "ayyতারপরে টাইপ করতে হবে টাইপ করবে"ap
  3. পরিবর্তে মূল ইয়াঙ্ক পুনরুদ্ধার করতে ইয়াঙ্ক রেজিস্টারগুলি ব্যবহার করুন। আপনি ইয়েঙ্ক করতে পারেন, তারপরে প্রয়োজনীয় হিসাবে মুছুন, তারপরে আপনি যখন পেস্টের ধরণে যান"0p
  4. মুছুন অপারেটর থেকে পৃথক একটি কাটা অপারেটর সরবরাহ করতে ভিআইএম-ইজিক্লিপ জাতীয় প্লাগইন ব্যবহার করুন (সম্পূর্ণ প্রকাশ: আমি লিখেছি)

:help registersপ্রথম 3 আরও বিশদ জন্য চালান


4
তাহলে xআমি "_xতখন ব্যবহার করব ?
durron597

1
এটাই সঠিক.
স্টিভ ভার্মিউলেন

2
@ durron597 আপনি যদি একবারে একটি চরিত্র মুছতে থাকেন তবে আপনার xসম্ভবত সম্ভবত dt)পরবর্তী মোটা বন্ধনীর আগ পর্যন্ত যে d2Wদুটি মুছে ফেলা হবে তা মুছতে হবে এমন মোটি মোশনগুলি শিখতে হবে which তারপরে আপনি হয়ত "_di{কোনও ব্রাসেড অঞ্চলের অভ্যন্তরের মতো কিছু করতে পারেন যা আমি সর্বদা করি। স্বাভাবিক মোডে এই মানে হলো " ডিলিট সবকিছু ভিতরে এই করে রেখেছিলেন অঞ্চলের মধ্যে ব্ল্যাক হোল "
OregonTrail

nnoremap x "_xআমার সাথে যুক্ত হয়েছে ~/.vimrc(এখানে ব্যাখ্যা: stackoverflow.com/questions/54255/… )।
ভিক্টোরিয়া স্টুয়ার্ট

11

xক্লিপবোর্ডে জিনিস রাখে না, এটি তাদের একটি রেজিস্টারে রাখে । এটিতে কোন রেজিস্টারটি এটি রাখার কথা যদি আপনি না বলেন, এটি এটি নামবিহীন রেজিস্টারে রাখে যা অবশ্যই পূর্ববর্তী বিষয়বস্তুগুলিকে ওভাররাইট করে। সুতরাং, পরিবর্তে, কোন রেজিস্টারটি ব্যবহার করবেন তা বলুন: " REGISTER xযেখানে রেজিস্টার কোনও একক অক্ষর। তারপরে pসেই রেজিস্টার থেকে আটকানোর জন্য আপনি একই উদ্ধৃতি-নিবন্ধের উপসর্গটি ব্যবহার করুন । (দ্রষ্টব্য: ছোট হাতের অক্ষরগুলি তাদের সামগ্রীর প্রতিস্থাপন করে; বড় হাতের সংযোজনসমূহ)।

এছাড়াও দুটি বিশেষ রেজিস্টার "0এবং "1"0সর্বাধিক ইয়াঙ্কেড ( y) পাঠ্য, যা আপনি অন্য কোনও কমান্ডের (কিছু x) মতো কিছু পাঠ্য মুছে ফেললেও তা থেকে যাবে । "1যতক্ষণ না সেই লেখাটি ছোট (এক লাইন) ছোট না হয় সর্বাধিক সদ্য মুছে ফেলা পাঠ্য। ছোট মোছা টেক্সট যায় "-

অবশেষে, স্টিভ ভার্মিউলিন যেমন উল্লেখ করেছেন, আপনি ব্ল্যাকহোল রেজিস্টার উল্লেখ করে মুছে ফেলা পাঠ্যটি সংরক্ষণ না করার জন্য উইমকে বলতে পারেন "_

প্রাসঙ্গিক সহায়তা আদেশটি হ'ল :help registers


3

:letকমান্ড আপনাকে একটি নামাঙ্কিত রেজিস্টার পুনরায় সংজ্ঞায়িত দেওয়া হবে। তেজ এর কমান্ড লাইন ইন, টিপে Control+ + R দুইবার 1 এবং তারপর রেজিস্টার নাম কমান্ড মধ্যে রেজিস্টার সামগ্রীগুলি পেস্ট হবে। তারপরে আপনি এটিতে কী আটকানো হয়েছে তা সংশোধন করতে পারবেন এবং আপনার পরিবর্তনগুলি দিয়ে নিবন্ধককে সংরক্ষণ করুন।

উদাহরণ:

  • স্বাভাবিক মোডে, পাঠ্য "foo বিন্যাস বার" সম্বলিত একটি লাইনে, টাইপ "fyyপুরো লাইন (হ্যাচকা টান লাগে yy) মধ্যে fরেজিস্টার ( "f)।
  • টাইপ করুন :let @f=', এবং Control+ r, Control+ rআবার, fএবং আপনার এটি "ফু বার" এ আটকানো দেখতে হবে, সুতরাং আপনার কমান্ড লাইনটি এখন :let @f='Foo Barশেষে পড়বে , একেবারে শেষের দিকে কার্সার দিয়ে।
  • এখন আপনি যা সন্নিবেশ করেছেন যেমন সম্পাদনা করতে তীরগুলি ব্যবহার করতে এবং কীগুলি মুছতে পারেন :let @f='foo bar baz
  • উদ্ধৃতি শেষ: :let @f='foo bar baz'এবং আঘাত Enter

এখন আপনি fরেজিস্ট্রারের বিষয়বস্তুগুলিকে "foo বার বাজ" হিসাবে নতুন করে সংজ্ঞায়িত করেছেন ।

(এটি :help letআরও তথ্যের জন্য ম্যাক্রোগুলির পক্ষেও কাজ করে ))


আপনি ইতিমধ্যে সন্নিবেশ মোডে থাকাকালীন 1Control + rআপনাকে একটি রেজিস্টার সন্নিবেশ করতে দেয়, যেন আপনি অক্ষরগুলি টাইপ করছেন। এই সিকোয়েন্সটি দু'বার ব্যবহার করা গুরুত্বপূর্ণ কারণ "পাঠ্যটি আক্ষরিকভাবে সন্নিবেশ করা হয়েছে, টাইপ করা নয় যেমনটি <BS>। - insert.txt ভিমডোক,:help i_CTRL-R_CTRL-R


0

"_@ মডারোবার্ট দ্বারা উল্লিখিত ব্ল্যাকহোল নিবন্ধের সাথে সম্পর্কিত আপনি http://vimcast.org/episodes/meet-the-yank-register/ এ একটি দরকারী স্ক্রিনকাস্ট পেতে পারেন

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


2
এটি প্রশ্নের উত্তর দেয় না। কোনও লেখকের কাছ থেকে সমালোচনা বা স্পষ্টতার জন্য অনুরোধ জানাতে, তাদের পোস্টের নীচে একটি মন্তব্য দিন - আপনি সর্বদা আপনার নিজের পোস্টে মন্তব্য করতে পারেন, এবং আপনার যথেষ্ট সুনামের পরে আপনি কোনও পোস্টে মন্তব্য করতে সক্ষম হবেন ।
জামেসান

আমি মূল পোস্টে মন্তব্য করার চেষ্টা করেছি কিন্তু পারলাম না। আমার একমাত্র বিকল্প ছিল আমি যা জামেসান
মারলন

0

প্লাগিন রিপ্লেসবিথরেজিস্টার

http://www.vim.org/scriptts/script.php?script_id=2703 (২০০৯-২০১৪)

এটি ম্যাপিংয়ের পরামর্শ দেয় gr

  1. ঝাঁকি মারিয়া টানা
  2. আপনি যে পাঠ্যটি প্রতিস্থাপন করতে চান তা চাক্ষুষভাবে নির্বাচন করুন এবং টিপুন gr
  3. আপনি প্রতিস্থাপন করতে চান পরবর্তী ব্লকে যান

বিকল্পভাবে, gr<text object>চাক্ষুষ নির্বাচন ছাড়াই এটি করতে ব্যবহার করুন use repeat.vimটিম পোপ এবং visualrepeat.vimইনগো কারক্যাট প্লাগইন ইনস্টল করা অবস্থায় ডট-রিপিট সমর্থিত হয়।

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