সিএমটিআরএল-এ বা সিএমটিআরএল-এক্স এর সাথে কীভাবে রেজিস্টার ব্যবহার করবেন


1

ধরুন আমার রেজিস্টারে একটি নম্বর আছে r

আমি CTRLAএবং এই মানটি কীভাবে ব্যবহার করতে পারিCTRLX

এটি পরিষ্কার করার জন্য এখানে একটি উদাহরণ রয়েছে:

মনে করুন যে আমার কাছে এই পাঠ্য ফাইলটি রয়েছে:

10
13
15

আমি রেজিস্টার rপ্রাপ্ত মানগুলির সাথে এই সংখ্যাগুলি বাড়াতে চাই (যদি এতে 5 থাকে)

15
18
20

আমি এটা জিজ্ঞাসা করছি কেন? কারণ আমি CTRLAএকটি ম্যাক্রো ব্যবহার করতে চাই তবে আমার যে পরিমাণ সময় প্রয়োগ করতে হবে CTRLAতা কেবল "রান টাইমে" জানতে পারে।

আরও সাধারণ উপায়ে, আমি কীভাবে কোনও রেজিস্টারে সঞ্চিত কমান্ডটি চালিয়ে যেতে পারি?

এই সমস্ত প্রশ্ন এবং উত্তর যেখানে আকর্ষণীয় কিন্তু তারা আমার প্রশ্নের উত্তর দেয় না:
https://stackoverflow.com/questions/1497958/how-to-use-vim-register
https://stackoverflow.com/questions/2405952/ তেজ-নিবন্ধ-ব্যবহার-ইন-সাবেক মোড

উত্তর:


4

আপনি এইভাবে একটি ম্যাপিং তৈরি করতে পারেন:

noremap <Leader><C-A> :<C-U>execute 'normal!' str2nr(getreg('r')) . '<C-A>'<CR>

এটি মানচিত্রে \Control-A( <Leader>ডিফল্ট \দেখতে, দেখতে :help leader) রেজিস্টারে Control-Aনির্দিষ্ট সময়ের সংখ্যাটি চালানোর জন্য r। এমনকি আপনি এটি ডিফল্টটিকে পুনরায় ফিরিয়ে দিতে Control-A( ছাড়ুন <Leader>) ব্যবহার করতে পারেন , তবে মনে হয় এটি পরে কখনও ম্যাপিংয়ের কথা ভুলে গেলে বিভ্রান্তির কারণ হতে পারে।

যখন rনিবন্ধটিতে রয়েছে 5, এটি এটির মতো কাজ করে ( Control-Aএকক-উদ্ধৃত স্ট্রিং আক্ষরিক ক্ষেত্রে এটি উপস্থাপন করা অসম্ভব হওয়ায়) ডাবল-কোট স্বরলিপিতে স্যুইচ করা হয়েছে :

getreg()এবং str2nr()ফাংশন মূল্যায়ন করা হয়, এই প্রাক্তন কমান্ড ফলে:

:execute 'normal!' 5 . "\<C-A>"

এটি অন্য প্রাক্তন কমান্ডের ফলাফল:

:normal! "5\<C-A>"

এটি একটি সাধারণ-মোড কমান্ড কার্যকর করে:

5Control-A

কোনটি স্বাভাবিক আগে উপসর্গ গণনা ব্যবহার Control-A(অ-ম্যাপ কারণে কি !মধ্যে :normal!)।

এই সংস্করণটি সর্বদা rরেজিস্টারে মান ব্যবহার করে ; এটি স্পষ্টভাবে কোনও উপসর্গযুক্ত গণনা উপেক্ষা করে (সাধারণের মতো নয় Control-A)। বিকল্প বাস্তবায়ন সম্ভব (উদাহরণস্বরূপ যেখানে একটি উপসর্গযুক্ত গণনা rরেজিস্টারে মূল্যকে ওভাররাইড করে বা গুণিত করে ) তবে তারা কিছুটা জটিল হবে।


আপনি ম্যাপিং ব্যবহারের পরিবর্তে কমান্ডটি সরাসরি আপনার ম্যাক্রোতে রেখে দিতে পারেন:

কিউকিউ ...: 'সাধারণ চালান!' str2nr (getreg ('r'))। ' Control-A' Return

আপনাকে প্রকৃত Control-Aএবং Returnতাদের <>সমতুল্যের পরিবর্তে টাইপ করতে হবে কারণ এটি আর কোনও ম্যাপিংয়ের অংশ নয় যেখানে ভিম স্বয়ংক্রিয়ভাবে অনুবাদটি তৈরি করবে। এছাড়াও, Control-Uবাদ দেওয়া হয়েছে, যেহেতু এটি কেবলমাত্র প্রাথমিকের আগে সম্ভাব্য উপসর্গ গণনা থেকে রক্ষা করার জন্য ছিল :(আপনি নিজেরাই ম্যাক্রোর সামগ্রীতে এটি রক্ষা করতে পারেন)।


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