আমি কীভাবে আমার রেকর্ডিং দেখতে (যেমন রেকর্ড করা ম্যাক্রো) সম্পাদনা করতে পারি?


39

আমি আমার অপারেশন রেকর্ড করতে জটিল পুনরাবৃত্তি ব্যবহার করছি ( qqরেকর্ড, এর কিছু অপারেশন , qস্টপ) এবং আমি একটি ভুল করেনি।

আমি আবার যা করেছি তার পরিবর্তে আমি কীটি রেকর্ড করেছি এবং ভুলটি সংশোধন করেছি তা সম্ভব?

@qকাজ করে রেকর্ড করা অক্ষরগুলি চালু করা , তবে আমি এটি আমার ম্যাপিংগুলিতে ( :map q- No mapping found) দেখতে পাচ্ছি না ।

এবং টাইপ করে সাহায্যের জন্য খুব বেশি তথ্য নেই :help recording

উত্তর:


42

দ্রষ্টব্য: আমি ধরে নিচ্ছি আপনি aএই উত্তরটির সম্পূর্ণতার জন্য নিবন্ধটি ব্যবহার করছেন তবে আপনি যে কোনও নিবন্ধক ব্যবহার করতে পারেন

নোট 2: <1b>হয় Esc; আপনি এটি দিয়ে Ctrl+vএবং তারপর সন্নিবেশ করতে পারেন Esc। এটি ^[( displayসেটিংসের উপর নির্ভর করে ) হিসাবেও প্রদর্শিত হতে পারে ।


এটি ম্যাপিং নয়; সুতরাং এটি বোঝায় যে :mapকাজ করে না। এটি একটি রেজিস্টারে লিপিবদ্ধ রয়েছে এবং আপনি এটি কোনও নিবন্ধকের মতো দেখতে ও সম্পাদনা করতে পারবেন।

যা যা করা হয় qতা হ'ল "এই রেজিস্টারটি সাফ করুন, এবং এতে কোনও কীস্ট্রোক যুক্ত করুন" এবং যা @কিছু করা হয় তা হ'ল একটি আদেশকে কমান্ড হিসাবে মূল্যায়ন করুন

ম্যাক্রো সম্পর্কে "আলাদা" কিছুই নেই, আপনি যে কোনও নিবন্ধকে ম্যাক্রো হিসাবে আবেদন করতে পারেন।


করার দেখতে শুধু ব্যবহার:

:echo @a

ঠিক যেমন কোনও রেজিস্টার।

আপনি :registersসমস্ত নিবন্ধগুলি দেখতেও ব্যবহার করতে পারেন ।


করার সম্পাদন করা আপনাকে অনেকগুলি করতে পারেন:

আপনাকে কেবল সহজভাবে নির্ধারিত করার সহজ উপায় @a, এরকম:

:let @a='iasd<1b>'

এটি সন্নিবেশ মোড ( i) সন্নিবেশ করানো asdএবং স্বাভাবিক মোডে ফিরে আসা শুরু করবে ।

এটি বিস্তৃত সম্পাদনার জন্য খুব কার্যকর নয়; আপনি ফাংশন (যেমন। substitute()) ব্যবহার করতে পারেন , বা কিছু সংযোজন করতে পারেন ( :let @a=@a . 'more') তবে মাঝখানে কিছু পরিবর্তন করা এত সহজ নয়।

আমি খুঁজে পেয়েছি যে এর সর্বোত্তম উপায় হ'ল একটি নতুন বাফার শুরু করা :splitবা :tabnewএটির সাথে registerোকানো, সম্পাদনা করে এবং তারপরে এটি অনুলিপি করে নিবন্ধ সম্পাদনা করা।

আপনি "apবাফারে পাঠ্যটি প্রবেশ করানোর জন্য এটি ব্যবহার করতে পারেন ( aআপনার নিবন্ধটি কোথায় ):

iThis is A<1b>

এখন আমি কেবল লাইনটি পরিবর্তন করতে পারি:

iThis is an edited macro<1b>

তারপরে আমি রেজিস্টারটিতে ^v$"ayএই লাইনটি ইয়াঙ্ক (অনুলিপি) করতে পারি a:

  • ^ লাইন শুরু করার জন্য
  • v ভিজ্যুয়াল মোডের জন্য
  • $ লাইনের শেষের জন্য
  • "ay নির্বাচন রেজিস্টার করতে ইয়াঙ্ক a

আপনি যদি চান, আপনি ভিজ্যুয়াল মোড ব্যবহার না করে এটি করতে পারেন ^"ay$

আপনি এখন ব্যবহার করতে পারেন @a, যেন এটিই আপনি মূল রেকর্ড করেছেন।

আপনি কেবল ব্যবহার করতে পারেন yyএবং তারপরে @"যা কিছুটা দ্রুত। এটি পেছনের নতুন লাইনটিও অনুলিপি করবে, যদিও এতে পার্শ্ব-প্রতিক্রিয়া হতে পারে ... এটিকে দ্রুত করার আরও একটি উপায় হ'ল ম্যাক্রো ব্যবহার করা :-)


2
আমি লক্ষ করব যে আপনার রেজিস্টারে একটি লাইনওয়ালা গতিটি ইয়াঙ্কিংয়ের ফলে একটি নিউলাইন চরিত্র অন্তর্ভুক্ত হওয়ার পার্শ্ব প্রতিক্রিয়া হবে, যেন আপনি Enterনিজের রেকর্ডিংয়ের শেষে চাপ দিয়েছিলেন। অনেক ক্ষেত্রে এটি সৌম্য হতে পারে, তবে এমন পরিস্থিতিতে যেখানে আপনি রেকর্ডিংয়ের শেষে কার্সার অবস্থানটি যত্ন সহকারে তৈরি করেছেন, এটি পুনরাবৃত্তিকে প্রভাবিত করতে পারে।
tommcdo

@tommcdo ডান; আপনি কেবল vসম্পূর্ণ লাইনটি ব্যবহার করতে এবং নির্বাচন করতে পারবেন (নতুন লাইন ছাড়াই)।
মার্টিন টর্নয়েজ

@ কার্পেটসমোকার " v^$"ayএই রেখাকে aরেজিস্টারে অনুলিপি করতে (অনুলিপি করতে) " এটি ^কি আগে হওয়া উচিত নয় vএবং $আপনি এখনও নতুন লাইনটি অনুলিপি করছেন না? আমি মনে করি এটি হওয়া উচিত: 0v$h"ay(হ্যাঁ বেদনাদায়ক দীর্ঘ!)
জোয়েটউইডেল

2
@joeytwiddle না, $চলে আসে কাছে লাইনের শেষে কিন্তু সম্পর্কে newline অন্তর্ভুক্ত নয়। এটা তোলে পার্থক্য 0y$এবং yy। এর hপরে রাখার $অর্থ হ'ল আপনি শেষ চরিত্রটি মিস করবেন।
অশুভপদ

সম্পাদনা করার জন্য আপনি যা করতে পারেন: @ a = টাইপ করুন কমান্ডগুলি সহজেই সম্পাদনযোগ্য হতে দিন: <Ctrl-f>, সম্পর্কিত লাইনটি নির্বাচন করুন এবং সম্পাদনা করুন (আপনি যদি সম্পাদনা করেন তবে শেষ লাইনটি এটি ডিফল্ট হয়) যথারীতি ভিএম ব্যবহার করে আপনি শেষ লাইনটি প্রবেশ করেছেন)। আপনি যখন লাইনটি সম্পাদন করতে চলেছেন বা প্রস্থান করার জন্য <Ctrl-c> হয়ে যান তখন রিটার্ন হিট করুন।

9

এর সাথে কাজ করার জন্য কিছু পেতে ...

qajjjq

aনিবন্ধে একটি ম্যাক্রো রেকর্ড শুরু করবে ।

আপনি :regকমান্ডের সাহায্যে আপনার বর্তমানের অনেকগুলি রেজিস্টারগুলি (ম্যাক্রো, ইয়াঙ্কিং, মোছা ইত্যাদির জন্য ব্যবহৃত) দেখতে পাচ্ছেন বা তার নাম সরবরাহ করে আপনি কোনও রেজিস্টার প্রদর্শন করতে পারেন। উদাহরণস্বরূপ, রেজিস্টার দেখাতে a:

:reg a

উৎপাদনের

--- Registers ---
"a   jjj

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

qAkkkq
:reg a

উৎপাদনের

--- Registers ---
"a   jjjkkk

আপনি যদি বিদ্যমান ম্যাক্রো সম্পাদনা করতে লেট সিনট্যাক্স ব্যবহার করতে চান তবে আপনি এটি করতে পারেন:

let @a='<C-r>a'

যা প্রসারিত হবে

let @a='jjjkkk'

এবং তারপরে আপনি স্বতন্ত্র কীস্ট্রোক পরিবর্তন করতে পারেন।

দ্রষ্টব্য যে আপনি <C-r>যে কোনও নিবন্ধ থেকে কমান্ড-লাইন মোডে (অথবা এই বিষয়টির জন্য সন্নিবেশ মোডে) পেস্ট করতে ব্যবহার করতে পারেন (যা নিয়ন্ত্রণ + আর)।

তদ্ব্যতীত, আপনি যখন কমান্ড-লাইন মোডে <C-f>থাকবেন , আপনি এটি টাইপ করলে কমান্ড-লাইন উইন্ডোটি পপআপ হয়ে যাবে, যাতে আপনি জারি করা পূর্ববর্তী কমান্ডগুলি দেখতে / সম্পাদনা করতে পারবেন এবং আপনার বর্তমান কমান্ডটি কল করার আগে সম্পাদনা করতে পারবেন। আপনি যে কমান্ডটি জমা দিতে চান তাতে এন্টার টিপুন।

এর সুবিধাটি হ'ল আপনি আপনার ম্যাক্রো সম্পাদনা করতে এই বাফারের অভ্যন্তরে আপনার স্বাভাবিক চলন / প্রতিস্থাপন আদেশগুলি ব্যবহার করতে পারেন। উদাহরণ স্বরূপ:

let @a='<C-r>a'<C-f>

আনতে হবে:

:118 reg
:119 reg a
:120 let @a='jjjkkk'

আপনি যদি কমান্ড 120 এ থাকেন তবে আপনি এটি করতে পারেন:

s/kkk/}
<return>
:reg a

উৎপাদনের

--- Registers ---
"a   jjj}

আপনি অবশ্যই নিবন্ধের বিষয়বস্তুগুলি আপনার বাফারে পেস্ট করতে পারেন এবং এটি সেখানে পরিবর্তন করতে পারেন। তবে আপনি আপনার ওয়ার্কিং বাফারকে দূষিত না করে আপনার যা যা প্রয়োজন তা করতে পারেন।

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