কমান্ড লাইনে থাকাকালীন আমি কীভাবে রেকর্ডিং বন্ধ করব?


19

যখন আমি ম্যাক্রোটির সাথে রেকর্ড করছি qএবং আমার কাজ শেষ হয়, তখন আমি টাইপ করতে পারি:

  • q আমি স্বাভাবিক বা ভিজ্যুয়াল মোডে থাকলে রেকর্ডিং বন্ধ করতে।
  • <c-o>q আমি সন্নিবেশ মোডে থাকলে রেকর্ডিং বন্ধ করতে।
  • ..

    আমার ম্যাক্রো কমান্ড মোডে শেষ হলে আমি কীভাবে রেকর্ডিং বন্ধ করব?


এই জন্য আপনার ব্যবহারের কেস? আমি সত্যিই কেবল কৌতূহলী :)
ফিলিপফ্র্যাঙ্ক

2
@ ফিলিপফ্র্যাঙ্ক আমি প্রায়শই একই প্যাটার্নটি বিভিন্ন পাঠ্যের বিভিন্ন ব্লকের সাথে একই প্যাটার্নটি অনুসন্ধান এবং প্রতিস্থাপন করব। এই জাতীয় ম্যাক্রো দিয়ে, ব্লকটি নির্বাচন করে, প্রকৃত অনুসন্ধানের প্যাটার্নটি লিখতে এবং কার্সারটি প্রতিস্থাপনের চেন টাইপ করার জন্য ভাল অবস্থানে রাখলে স্বয়ংক্রিয়ভাবে তৈরি করা যায়। আমি যখন এটি খেলি, এটি ব্লকটি নির্বাচন করবে, কমান্ড মোডটি প্রবেশ করবে, টাইপ করুন এবং :'<,'>s/toBeReplaced//gএরপরে দু'জনের মধ্যে কার্সার রাখুন //যাতে আমার যা করতে হবে তা হ'ল টাইপ করতে হবে newString<cr>এবং আমার কাজ শেষ হয়ে গেছে। :)
iago-lito

সুতরাং এটি একটি প্যারামিটার সহ ম্যাক্রোর মতো। খুব সুন্দর ধারণা, ধন্যবাদ!
ফিলিপফ্র্যাঙ্ক

@ ফিলিপফ্র্যাঙ্ক, হ্যাঁ। আপনি খুশি আমি খুশি। :)
iago-lito

উত্তর:


12

আর একটি সমাধান হ'ল কমান্ড লাইন মোডে থাকাকালীন রেকর্ডিং বন্ধ করতে ব্যবহার করুন Ctrl-fএবং টিপুন q

Ctrl-fআপনাকে কমান্ড লাইন উইন্ডোটি খুলতে দেয় যা আপনি সাধারণ মোডে কমান্ডটি সম্পাদনা করতে পারবেন। কমান্ডটি যাচাই করতে, কেবল এন্টার ব্যবহার করুন।


অতএব, এর মতো কিছু যুক্ত করার পরে:

cnoremap <c-q> <c-f>i<c-o>q

আপনার মধ্যে .vimrc, আপনি <c-q>কমান্ড মোডে থাকাকালীন ম্যাক্রো রেকর্ডিং বন্ধ করতে ব্যবহার করতে পারেন ।


ফ্লোরেন্ট


আপনাকে এখনও ^Fম্যাক্রোর প্রান্ত থেকে <সিএফ> অক্ষর ( ) সরাতে হবে , তাই না? কমপক্ষে যা আমি দেখছি।
ভ্যানলিজার

প্রায় সেখানে! সত্যিই দরকারী (কমান্ড লাইন উইন্ডো সম্পর্কে আমি জানতাম না তবে এটি দুর্দান্ত) তবে ..আরগ! মনে হচ্ছে সন্নিবেশ মোড থেকে এই উইন্ডোজ প্রবেশ করানো আপনার নির্বাচিত অঞ্চলটি হারিয়ে ফেলে। আপনি নির্বাচিত অঞ্চলে কমান্ড লাইন উইন্ডো থেকে কমান্ডটি চালু করার কোনও উপায় আছে কি?
iago-lito

@ ভ্যানলিজার না, যেহেতু আপনি কমান্ড-লাইন উইন্ডোতে আপনার কমান্ডটি টাইপ করতে পারেন। আপনার ম্যাক্রোটি এর মতো হবে qqSTARTMACRO:STARTCOMMANDLINEPART<c-f>i<c-o>qএবং তাই আপনি কমান্ড অংশটি টাইপ করার সময় রেকর্ডিংটি বন্ধ হয়ে যায়। ম্যাক্রো ব্যবহার করতে: @qFINISHYOURCOMMAND<cr>এবং আপনি শেষ করেছেন: এটি সম্পাদনা করার দরকার নেই। দুর্ভাগ্যক্রমে, এটি ভিজ্যুয়াল মোড থেকে কাজ করছে বলে মনে হচ্ছে না (বা এটি নির্বাচনটি হারিয়ে ফেলে) .. বা আমি কিছু মিস করেছি?
iago-lito

আহ, ঠিক :) বিটিডাব্লু, আমি একটি চাক্ষুষ পরিসীমা নির্বাচন করতে পারি, তারপরে কর @qএবং কমান্ড শুরুর সাথে এই পরিসীমা যুক্ত করা হয়েছিল '<,'>- যতক্ষণ না ম্যাক্রো শুরু হয়েছিল :....
ভ্যানলাসার

@ লাগো-লিটো আসলে, আপনার পছন্দটি আপনার পছন্দটি না দেখলেও মনে হচ্ছে, নির্দিষ্ট রেঞ্জ (যেমন '<,'>) এখনও কমান্ডটি বৈধ করার সময় নির্বাচনের সাথে মেলে।
fflorent

17

এটি করার একটি উপায়:

  • আপনার ম্যাক্রোটি যথারীতি শুরু করুন (যেমন qq... অন্যান্য অক্ষর)
  • আপনি যখন সেমিডলাইন-মোডে পৌঁছেছেন, আপনার সমস্ত অক্ষর লিখুন
  • আপনি এখানে ম্যাক্রো শেষ করতে চান। আপনার ম্যাক্রো শেষ করতে ESC, সেমিডলাইন-মোড থেকে বেরিয়ে আসতে হিট করুন q
  • ESCআপনার qরেজিস্টার থেকে মুছে ফেলুন (*): আপনি এটি একটি বাফারে পেস্ট করতে পারেন, ^[চরিত্রটি সরিয়ে ফেলতে পারেন , পুরো জিনিসটি আবার (চরিত্র অনুসারে) নির্বাচন করতে পারেন এবং এটি রেজিস্টার করতে ফিরে যেতে পারেন q
  • এটি এতই: আপনার ম্যাক্রো সঞ্চালন করুন: @q

মূলত, আপনি আপনার ম্যাক্রোটিকে কিছুটা "পোস্ট-প্রসেস" করেন, যেহেতু এটি কোনও রেজিস্টারে সংরক্ষিত থাকে :)

(*) রেজিস্টারে সঞ্চিত ম্যাক্রো থেকে শেষ অক্ষরটি সরিয়ে ফেলার একটি দ্রুত উপায় হ'ল q:

:let @q = @q[:-2]

হা হা! এটি আসলে এখনও পর্যন্ত আমার হ্যাক হয়েছে = ডি। এটি করার কোনও "আধ্যাত্মিক" উপায় নেই? (আরও দ্রুত )
iago-lito

আমি এর কোনওটি জানি না, তবে আমি ম্যাক্রোগুলি খুব বেশি ব্যবহার করি না (পরিবর্তে আমি ছোট ফাংশনগুলি লিখতে পছন্দ করি)। পরে যখন আমি তাদের দিকে তাকাব তখন ম্যাক্রোরা আমার জন্য ক্রিপ্টিক মনে হয়।
ভ্যানলিজার

@ ভ্যানলাসার: :let @q = @q[:-2]আপনি কি লাইনটি সম্পর্কে আরও কিছু বিস্তারিত জানাতে পারেন ? বিশেষত কীভাবে [:-2]কাজ করে? :-)
স্ট্যাটক্স

এটি "স্লাইসিং" এবং তালিকাগুলি এবং স্ট্রিংগুলিতে কাজ করে (এটি কীভাবে আমি @qউপরে / উপরে অ্যাক্সেস / সেট করি )। কিছু উদাহরণ এখানে
ভ্যানলাসার

পছন্দ করেছেন পুনরাবৃত্তি করার জন্য দরকারী, পরিশীলিত ছোট ছোট জিনিসগুলি আপনার খুব নির্দিষ্ট ক্ষেত্রে করা দরকার you আপনি এই ধরণের সমস্যাগুলি জানেন যা কেবল একবার দেখা যায় এবং কয়েক মিনিটের জন্য স্থায়ী হয়। ফ্লাইতে ম্যাক্রো তৈরি করে এবং একটি ডেডিকেটেড ফাংশনটি লিখতে এবং ডিবাগ না করে তাদের সাথে মোকাবেলা করতে সক্ষম হওয়াই .. উউ এত দুর্দান্ত! ^ ^
iago-lito

3

ব্যবহারের ক্ষেত্রে আপনার মন্তব্য পড়ে, দেখে মনে হচ্ছে আপনি কোনও ম্যাক্রোর পরিবর্তে কী ম্যাপিং ব্যবহার করতে পারেন।

আমার .vimrc এ এই লাইনটি আছে (আমি এটি কোথায় পেয়েছি তা মনে রাখবেন না):

nnoremap <Leader>s :%s/\<<C-r><C-w>\>//g<Left><Left>

আপনার বর্ণিত ব্যবহারের ক্ষেত্রে এটি একইরকম প্রভাব ফেলেছে, আপনাকে কমান্ড লাইনে ফেলে রাখার জন্য আপনাকে কেবলমাত্র প্রতিস্থাপনটি টাইপ করতে হবে এবং এন্টার টিপুন, তবে এই ক্ষেত্রে, আপনার কর্সারের শব্দের সমস্ত উপস্থিতি প্রতিস্থাপন করে ।

কেবলমাত্র বর্তমান ব্লকের মধ্যে প্রতিস্থাপন করতে, আমি মনে করি নিম্নলিখিতগুলির মতো কিছু কাজ করা উচিত:

nnoremap <Leader>s m'va{<ESC>``:'<,'>s/\<<C-r><C-w>\>//g<Left><Left>

অবশ্যই, আপনি এটি যা চাবি এটি মানচিত্র করতে পারেন।

উপরেরটি কী করে: নামবিহীন চিহ্নিতকারী ব্যবহার করে বর্তমান অবস্থান চিহ্নিত করুন, দৃশ্যমানভাবে বর্তমান ব্লকটি নির্বাচন করুন, ভিজ্যুয়াল মোডটি ছেড়ে দিন এবং কার্সারটিকে সংরক্ষিত অবস্থানে ফিরিয়ে দিন (ভিজ্যুয়াল সিলেকশন মার্কার্স এখনও সেট রয়েছে), কমান্ড মোডে প্রবেশ করুন এবং বিকল্প কমান্ডটি টাইপ করুন , কার্সারের অধীনে থাকা শব্দটি সন্নিবেশ করানো <C-r><C-w>এবং প্রতিস্থাপনটি টাইপ করার জন্য আপনার কার্সারকে অবস্থিত করা।


হ্যাঁ, আমারও এটি আছে। আমার সুনির্দিষ্ট ব্যবহারের ক্ষেত্রে, toBeReplacedপ্যাটার্নটি "কার্সার এর আওতাধীন শব্দ" এর মতো সহজ নয়, এ কারণেই আমার একটি ছোট, নির্দিষ্ট ম্যাক্রো দরকার যা আমি যেতে যেতে তৈরি করতে পারি। এবং আবার: মানচিত্রের জন্য খুব নির্দিষ্ট:
specific

2
সম্ভবত, একটি নিবন্ধে প্যাটার্নটি রাখুন, তারপরে নিবন্ধের সামগ্রীটি স্বয়ংক্রিয়ভাবে toBeReplacedঅংশ হিসাবে (কার্সারের অধীনে বর্তমান শব্দের পরিবর্তে, যা আরও সীমাবদ্ধ) এর জন্য পেতে উপরের ম্যাপিংটিকে রূপান্তর করুন ।
ভ্যানলাসার

1
@ ভ্যানলেসার রাইট, এটি একটি সাধারণ ম্যাপিংয়ের সুযোগ দেয় এবং এটি আরও সহজ করে তোলে: এটির সাহায্যে va{:s/<C-r>0//g<Left><Left>আপনার আগে যে ধরণের প্যাটার্ন দরকার তা ইঙ্ক করে দিতে পারেন, এবং তারপরে বর্তমানের কোনও কিছুর সাথে সেই প্যাটার্নটি প্রতিস্থাপন করতে ম্যাপিং কীটি টিপুন press ব্লক।
hakাকিমিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.