আমি সদ্য পরিবর্তিত শব্দটির পরবর্তী উপস্থিতিতে ঝাঁপ দাও


12

আমার যদি নিম্নলিখিত থাকে:

function foo(bar) {
    return bar + 1;
}

আর আমি ব্যবহার cwপ্রথম পরিবর্তন করতে barকরতে baz, কিভাবে আমি পরের ম্যাচিং ঝাঁপ না bar, যাতে আমি ব্যবহার করতে পারেন .একই পরিবর্তন করতে?

আমি ব্যবহার করতে পারি না *, কারণ এটি কার্সারের অধীনে বর্তমান শব্দটির সন্ধান করে এবং আমি বোকামি barদিয়ে প্রথমবার অনুসন্ধান করি নি , nকাজ করবে না।

আমি শব্দটি পরিবর্তন করার আগে যেমন ছিল তখন শব্দের পরবর্তী ঘটনাটি অনুসন্ধান করার কি কোনও সহজ উপায় আছে ?

আমি কোনও অনুসন্ধান এবং প্রতিস্থাপন করতে চাই না, কারণ barআমার ফাইলে এমন আরও কিছু ঘটনা রয়েছে যা আমি পরিবর্তন করতে চাই না, বা এর দুটি মাত্র উদাহরণ ছিল barএবং :%s/bar/baz/আমি শুরু করার আগেই ভুলে গিয়েছিলাম এবং এটিও খুব বেশি একমাত্র অবশিষ্ট দৃষ্টান্তটি পরিবর্তন করার জন্য অনেক প্রচেষ্টা।


2
এটি আপনার বর্ণিত ওয়ার্কফ্লো পুরোপুরি অনুসরণ করে না তবে vim-oblique* অনুসন্ধানকে উন্নত করে । বিশেষত এটি *আপনার কার্সারটি না সরিয়ে বর্তমান শব্দটি দৃশ্যত নির্বাচন করে। এটি ইনস্টল হয়ে গেলে আপনি *ciwঅনুসন্ধানের নিবন্ধে পুরানো শব্দটি রেখে শব্দটি পরিবর্তন করতে পারেন। তারপরে আপনি nএবং ব্যবহার করতে পারেন .
স্ট্যাটক্স

এন টিপলে আপনাকে সর্বশেষ অনুসন্ধানের প্যাটার্নের পরবর্তী ঘটনায় নিয়ে যাবে। আপনি কেন চেষ্টা করেননি?
সিবিকোডার

... কারণ আমি প্রথম ঘটনাটি পেতে অনুসন্ধান করি নি, nকাজ করবে না।
রজার লিপসক্বে

উত্তর:


14

আপনি যে পাঠ্যটি দিয়ে সবে পরিবর্তন করেছেন cwতা নামবিহীন রেজিস্টারে কাটা হয়েছে যাতে আপনি এটি দিয়ে পুনরায় ব্যবহার করতে পারেন:

/<C-r>"<CR>

আপনার শেষ পরিবর্তন দ্বারা আবৃত পাঠ্যের পরবর্তী উপস্থিতিতে ঝাঁপ দিতে।


5

সম্পূর্ণ কর্মপ্রবাহ হিসাবে রোমেনেল বন্ধ বাড়ানোর জন্য ...

আপনি যদি এই ধরণের সম্পাদনা সম্পাদন করতে আরও বেশি আগ্রহী হন এবং তারপরে বুঝতে পারেন যে আপনাকে কোনও অনুচ্ছেদ / ক্রিয়াকলাপের উপর একই সম্পাদনাগুলি প্রয়োগ করতে হবে যা আপনি "এবং .নিবন্ধগুলি ব্যবহার করতে পারেন ।

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

V]] - অনুচ্ছেদ / ফাংশন শেষ করতে ভিজ্যুয়াল লাইন।

  • : - যেহেতু আপনি ভিজ্যুয়াল মোডে রয়েছেন এটি হয়ে যায় :'<,'>
  • s/ - অনুসন্ধান
  • CTRL+ "- সর্বশেষ ইয়াঙ্ক / আইটেম মুছুন (উদাহরণে বার)
  • / - এবং প্রতিস্থাপন
  • CTRL+ .- সর্বশেষ সন্নিবেশ (উদাহরণে বাজ)

আপনাকে ব্যবহার করতে হবে যেহেতু এই প্যাটার্নটি ব্যবহার করতে কিছুটা সময় নেয়। বেশিরভাগ সময় আপনি সন্ধানটি প্রয়োগ করতে এবং যুক্তি সহ পুরো ফাংশনটি প্রতিস্থাপন করতে চান তবে এন্টি-প্যাটার্নটি সম্পাদন না করার এটি একটি দুর্দান্ত উপায় "কাজ করুন, বুঝতে পারেন আপনার এটি আরও ভাল করা উচিত ছিল, পূর্বাবস্থায় ফিরে আসুন এবং পুনরায় করুন সঠিকভাবে। "


2

যদি আপনি এর চেয়ে আলাদা কোনও সংমিশ্রণটি চাপতে আপত্তি করেন না cw, তবে আমি বিশ্বাস করি যে একটি শর্টকাট সংজ্ঞায়িত করে আপনি যা চান সহজেই তা পেতে পারেন। আপনি যা করতে পারেন তা নিম্নলিখিতটি স্থাপন করা

nmap <leader>a "1yiw:let @/=@1^Mciw

আপনার .vimrcফাইল লক্ষ্য করুন ^M রিটার্ন কী একটি ক্যাপচার, এবং নয় এমন অক্ষর ^এবং M। আপনি টিপে এটি পেতে Ctrl+ + Vদ্বারা অনুসরণ সন্নিবেশ মোডে Enter। এখন, এই সংজ্ঞায়িত করে টিপে টি <leader>aএকই কাজ করবে cwতবে এখন শব্দটি (পরিবর্তনের পূর্বে) আপনার "শেষ অনুসন্ধানের নিবন্ধ" (অর্থাৎ /নিবন্ধক) এ থাকবে, সুতরাং nআপনি পরিবর্তনটি পরিবর্তন করে ফিরে আসার পরে টিপুন স্বাভাবিক মোডে আপনি পরবর্তী ইভেন্টে পাবেন। তেমনি, টিপুন Nআপনি পূর্ববর্তী ঘটনাতে পাবেন।

শর্টকাট আপনি অবশ্যই তুলনায় একটি ভিন্ন শর্টকাট চয়ন করতে পারেন <leader>a, তবে আমি কেবল দেখতে পেলাম যে এটি খুব অ্যাক্সেসযোগ্য শর্টকাট। ব্যক্তিগতভাবে আমি সেট <leader>করে ,রেখেছি যাতে আমার কেবল ,অনুসরণ করা টিপতে হবে aতবে এটি আমেরিকান কীবোর্ড ব্যবহার না করার ফলে আমার \কিছুটা লুকিয়ে রয়েছে (আমি বিশ্বাস করি \এটি ডিফল্ট <leader>)।

ব্যাখ্যা ধারণাটি সত্যই সহজ। কার্সারের নীচে শব্দটি অনুসন্ধান রেজিস্টারে ইয়াঙ্ক করুন /এবং তারপরে করুন cw। এইভাবে nmap <leader>a "/yciwআমি লক্ষ্য রেখেছিলাম, তবে দুর্ভাগ্যক্রমে আমি মনে করি না যে আপনি অনুসন্ধানের নিবন্ধটিতে ইয়ঙ্ক করতে পারেন, সুতরাং কাজটির নিবন্ধটি কার্সারের নীচে শব্দটি 1রেজিস্টারটিতে ঝাঁকিয়ে দেওয়া , তারপরে /রেজিস্টারটি সেট করুন এবং তারপরে এটি করুন cw। সুতরাং "1yiwযে অংশটি রেজিস্টারটিতে কার্সারের নীচে অভ্যন্তরীণ শব্দটি yanks করে 1। যদি আপনি ভিতরের শব্দগুলি সম্পর্কে না জানেন তবে আপনি পরীক্ষা করে দেখতে পারেন :help iw। এরপরে, :let @/=@1ক্যাপচারের পরে নিবন্ধের Enterবিষয়বস্তুগুলিতে রাখে । এই মুহুর্তে এবং1/nNকার্সারের নীচে শব্দের পরবর্তী এবং পূর্বের উপস্থিতি হিসাবে কাজ করে এবং তারপরে একটি ciwসম্পন্ন হয় যাতে কার্সারের নীচে শব্দটি মুছে ফেলা হয় এবং ভিমকে সন্নিবেশ মোডে রাখা হয়।

শব্দ বনাম অভ্যন্তরীণ শব্দটি আমি কেবল বুঝতে পেরেছিলাম যে আমি ধরে নিয়েছি যে আপনি পুরো শব্দটি কার্সারের অধীনে চেয়েছিলেন , কেবল কার্সার এবং বিন্দু থেকে নয়। এই কারনে আমি ব্যবহার করে তা হল iwপরিবর্তে wসর্বত্র। যদি এটি না হয় তবে আপনার ব্যবহার করা উচিত

nmap <leader>a "1yw:let @/=@1^Mcw

পরিবর্তে. কার্সারটি যদি শব্দের প্রথম অক্ষরে থাকে তবে কোনও পার্থক্য নেই।

দাবিত্যাগ এই সমাধান সম্ভবত ভাল কাজ করবে না যদি আপনি একটি উপর কার্সার স্ট্যান্ড না থাকার, এমন কিছু বিষয় যা অক্ষর থেকে পণ্যদ্রব্য বিভিন্ন রয়েছে তে এটি ব্যবহার করতে উদাহরণস্বরূপ চেষ্টা \বা প্রতিস্থাপন iwদ্বারা iW, ib, isবা ipবা কিছু (যদিও আমি কেন জানি না তুমি would পুরো বাক্য সহ এই বৈশিষ্ট্যটি চান)

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