ব্ল্যাকহোল রেজিস্টার ("_) ব্যবহার কী?


15

আমি সম্প্রতি ব্ল্যাকহোল রেজিস্টার সম্পর্কে পড়েছি "_যা কেবল লেখার জন্য একটি রেজিস্টার।

ভিম ডকুমেন্টেশন এটিকে এভাবে বর্ণনা করে:

  1. ব্ল্যাকহোল রেজিস্টার "_

এই রেজিস্টারটিতে লেখার সময়, কিছুই ঘটে না। এটি সাধারণ রেজিস্টারগুলিকে প্রভাবিত না করে পাঠ্য মুছতে ব্যবহার করা যেতে পারে। এই রেজিস্টার থেকে পড়ার সময়, কিছুই ফেরানো হয় না।

আমি যে সমস্ত নিবন্ধ এবং বই পড়েছি সেগুলিতে লেখকরা সর্বদা একই উদাহরণ ব্যবহার করেন যা এই রেজিস্টারটি ব্যবহার করা উচিত যখন আমাদের পূর্ববর্তী ইয়ঙ্কডটি মুছে না দিয়ে কিছু পাঠ মুছতে হবে।

আমি এই ব্যবহারটি বুঝতে পারি তবে আমি অবাক হয়েছি যে আমি এই নিবন্ধের অন্যান্য ব্যবহারের মামলাগুলি খুঁজে পাচ্ছি না, যা আমাকে 2 টি প্রশ্নের দিকে নিয়ে যায়:

  • এই নিবন্ধটি কি অন্য কিছু ব্যবহারের ক্ষেত্রে দরকারী ? যদি হ্যাঁ, কোনটি?

  • আমার আগে উদ্ধৃত হওয়া ব্যবহারের ক্ষেত্রে যদি এই নিবন্ধটির একমাত্র উদ্দেশ্যটি ব্যবহার করা হয়, তবে কেন ভিমের নির্মাতারা এই জাতীয় নিবন্ধকের সাহায্যে এই সমস্যাটি সমাধান করার সিদ্ধান্ত নিয়েছিলেন ? আমার অর্থ এই উত্তরটি সমস্যার সমাধান দেখায় যা ব্যবহারের চেয়ে কম কীস্ট্রোককে বোঝায় "_। ব্যবহার "0এছাড়াও এড়াতে পারেন রেজিস্টার করো ব্ল্যাক হোল ব্যবহার কেন তারা এটা সৃষ্টি করেছেন?

উত্তর:


18

ব্ল্যাকহোল রেজিস্টারটি একই পরিস্থিতিতে ব্যবহৃত হয় /dev/null: আপনি যখন এমন কোনও ক্রিয়া করেন যা সাধারণত কিছু আউটপুট করে তবে আপনার আউটপুটটির কোনও ব্যবহার নেই।

ভিমের ডিফল্ট আচরণটি "কাটা", "মুছুন" নয় not বেশিরভাগ ক্ষেত্রে এটি কিছু যায় আসে না তবে, কখনও কখনও ব্যবহারকারীদের আসলে "মোছার" প্রয়োজন হতে পারে। সেখানেই ব্ল্যাকহোলের নিবন্ধটি কার্যকর হয়।

এই নিবন্ধটি কি অন্য কিছু ব্যবহারের ক্ষেত্রে দরকারী?

ব্ল্যাকহোল রেজিস্টারটি এখানে আমাদের নামবিহীন নিবন্ধক এবং সংখ্যাযুক্ত রেজিস্টারগুলি ক্লোবার্ব না করে স্টাফগুলি কাটতে দিন।

সম্ভাব্য ব্যবহারের ঘটনাগুলি অসংখ্য তবে সমস্ত আশ্চর্যরকমভাবে একই রকম:

  • একটি প্রকৃত "মুছুন" সরবরাহ করুন,
  • নিবন্ধসমূহের উপর আরও ভাল নিয়ন্ত্রণ রাখতে হবে, প্রধানত নামবিহীন,
  • সংখ্যাযুক্ত রেজিস্টারগুলিকে একটি স্থিতিশীল অবস্থায় রাখুন,
  • আমাদের "পুনরাবৃত্তযোগ্য পুটস" দিয়ে, নামহীন রেজিস্টার থেকে রাখার ক্ষমতা ধরে রাখার সময় কিছু কাটুন,
  • এমন কোনও কিছুর উপরে রাখুন যা আপনার যত্ন নেই
  • স্ক্রিপ্টগুলিতে পার্শ্ব প্রতিক্রিয়া প্রতিরোধ করুন ...

কেউ "0p"পুনরাবৃত্তি পুটস" দৃশ্যের জন্য ব্যবহার করতে পারেন (সবচেয়ে সাধারণ ব্যবহারের ক্ষেত্রে, তাই এটি ভিম সাহিত্যে সর্বব্যাপী) তবে সেই রেজিস্টারটি "_অন্যান্য পরিস্থিতিতে যেমন ব্যবহারযোগ্য ততটা দূরে ।


আমি আপনার ব্যবহারের ঘটনাগুলি এই নিবন্ধের আচরণের পরিণতি হিসাবে আরও বেশি দেখতে পাচ্ছি, তবে আমি মনে করি আপনার উত্তরটি এই নিবন্ধটিকে স্পষ্টভাবে বর্ণনা করে `ব্ল্যাকহোল রেজিস্টারটি এখানে নামবিহীন নিবন্ধ এবং নম্বরযুক্ত নিবন্ধগুলিকে ক্লোবার্ব না করে আমাদের জিনিসগুলি কাটাতে দেয়` আমি ছিলাম was অন্যান্য উত্তরের প্রত্যাশা থাকলেও মনে হয় এটি কেবল এই নিবন্ধের ব্যবহার। আপনার উত্তরের জন্য আপনাকে অনেক ধন্যবাদ!
স্ট্যাটক্স

5

পাঠ্য মোছার পাশাপাশি, আপনি অন্যান্য নিবন্ধগুলি মুছতে ব্ল্যাকহোলের নিবন্ধ ব্যবহার করতে পারেন। উদাহরণ:

:let @a=@_

এটি রেজিস্টার সাফ করার এক উপায় "a


2
যদি অন্য কেউ এটি পড়ে মনে করে, "আমি ভাবছি যে এটি কি আরও সংক্ষিপ্ত, পরিষ্কার প্রতিস্থাপন হয় :call setreg('a', [])," আমি যেমন করেছি: আফসোস, উত্তরটি নেই। এটি কাজ করে :call setreg('a', '')( কমান্ডের "aআউটপুট ছেড়ে চলে যায়:registers
রিচ

@ রিচ নিরবিচ্ছিন্নভাবে "aআউটপুট ছেড়ে যাওয়ার তাৎপর্য কী :registers?
আলেকজ মাগুরা

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

1

একটি ফাংশনে একটি ব্যবহারিক ব্যবহার। বেলো ফাংশনে অজগর মন্তব্য #যুক্ত করা হয় এবং ফলাফলের উপর নির্ভর করে মুছে ফেলা হয় getline('.')[0]। লাইনটিতে একটি মন্তব্য থাকলে চরটি #মুছে ফেলা হয়েছে, তবে এই ক্ষেত্রে আমরা এটি আমাদের ডিফল্ট রেজিস্টারের সাথে গোলমাল করতে চাই না।

function! ToggleComment()
    let l:win_view = winsaveview()
    if getline('.')[0] == "#"
        normal! 0"_x
    else
        normal! I#
    endif
    call winrestview(l:win_view)
endfunction
nnoremap <Leader>t :call ToggleComment()<CR>
vnoremap <Leader>t <C-o>:call ToggleComment()<CR>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.