মানচিত্র, নোরম্যাপ, সংক্ষেপ এবং নরিবব্রিয়েভ কমান্ডের মধ্যে পার্থক্য কী?


19

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


পরবর্তী অংশটি কিছুটা মেটা: এই সাইটে উত্তর দেওয়ার সময় আমাদের কোন ফর্মটি ব্যবহার করা উচিত? - আমি কি এটি মেটাতে জিজ্ঞাসা করব, বা এটিকে প্রশ্ন যুক্ত করব?
মুরু

আমি বলতে চাই এটি নির্ভর করে। কোনও ম্যাপিং প্রদর্শিত হলে আমি সর্বদা নোরম্যাপ সংস্করণ ব্যবহার করব। এইভাবে, লোকগুলি পুনরাবৃত্ত সংস্করণগুলিতে অ-পুনরাবৃত্ত ম্যাপিংগুলি ব্যবহার করার অভ্যাসে পরিণত হয়। অবশ্যই না করে, কোনও <প্লাগ> ম্যাপিংয়ে উদাহরণস্বরূপ, মানচিত্রটি বিশেষভাবে ব্যবহারের কারণ রয়েছে।
অক্ষয়

উত্তর:


21

প্রথমত, mapএবং noremapযে অনুরূপ প্রতিটি জন্য ম্যাপিং তৈরি হয়, স্বাভাবিক চাক্ষুষ, নির্বাচন করে অপারেটর মুলতুবী মোড একযোগে । ভিম এতে বিশদ বিবরণ :help map-overview:

Overview of which map command works in which mode.  More details below.
     COMMANDS                    MODES ~
:map   :noremap  :unmap     Normal, Visual, Select, Operator-pending
:nmap  :nnoremap :nunmap    Normal
:vmap  :vnoremap :vunmap    Visual and Select
:smap  :snoremap :sunmap    Select
:xmap  :xnoremap :xunmap    Visual
:omap  :onoremap :ounmap    Operator-pending
:map!  :noremap! :unmap!    Insert and Command-line
:imap  :inoremap :iunmap    Insert
:lmap  :lnoremap :lunmap    Insert, Command-line, Lang-Arg
:cmap  :cnoremap :cunmap    Command-line

উপরোক্ত সহায়তা অনুসারে, আপনি যদি কোনও নির্দিষ্ট মোডে ম্যাপিংকে সীমাবদ্ধ রাখতে চান তবে আপনাকে আগে থেকেই চাপ দিতে হবে:

'এন' (সাধারণের জন্য), 'ভি' (ভিজ্যুয়াল এবং সিলেক্টের জন্য), 'সি' (কমান্ডের জন্য), 'এক্স' (ভিজ্যুয়াল মোডের জন্য), 'এস' (সিলেক্টের জন্য), 'ও' (অপারেটর মুলতুবি হিসাবে )।

এই ক্ষেত্রে,

nmap n nzz

একটি সাধারণ মোড তৈরি করবে, এর পুনরাবৃত্ত ম্যাপিং n

এখন, noremapএটি কেবল একটি পুনরাবৃত্ত সংস্করণ map

তাহলে নন-रिकर्सিভ ম্যাপিং কী? এর সাথে ভিমেরও উত্তর রয়েছে :help map-recursive:

If you include the {lhs} in the {rhs} you have a recursive mapping.  When
{lhs} is typed, it will be replaced with {rhs}.  When the {lhs} which is
included in {rhs} is encountered it will be replaced with {rhs}, and so on.
This makes it possible to repeat a command an infinite number of times.  The
only problem is that the only way to stop this is by causing an error.  The
macros to solve a maze uses this, look there for an example.  There is one
exception: If the {rhs} starts with {lhs}, the first character is not mapped
again (this is Vi compatible).
For example: >
   :map ab abcd
will execute the "a" command and insert "bcd" in the text.  The "ab" in the
{rhs} will not be mapped again.

এর একটি উদাহরণ নিম্নলিখিত ম্যাপিং হয়:

:imap j k

:imap k j

এখন, ভিম কে এবং কে দিয়ে জে প্রতিস্থাপন করবে অসীম সংখ্যক বার, এবং এর ফলে আপনাকে এমন একটি ত্রুটি দেখাবে যা আপনি একটি পুনরাবৃত্ত ম্যাপিং তৈরি করেছেন।

এ কারণেই সাধারণত প্রস্তাব দেওয়া হয় যে আপনি প্রায় সর্বদা (আপনার যখন <Plug>ম্যাপিং বা অনুরূপ থাকে তখন বাদে ) অ-পুনরাবৃত্ত ম্যাপিং ব্যবহার করুন। আপনি যখন অসাবধানতার সাথে পুনরাবৃত্ত ম্যাপিংগুলি তৈরি করেন এটি এটি ভিমের ঝুলন্ত প্রতিরোধ করে। নন-রিকার্সিভ ম্যাপিং তাই ভিমে কমান্ড ম্যাপ করার আরও নিরাপদ উপায়।

উপরের তথ্যটি হাতে পেয়ে আমরা দেখতে পাচ্ছি এটি :noreabbrevহ'ল :abbrevকমান্ডের কেবল একটি পুনরাবৃত্ত সংস্করণ ।

আপনি :abbrevকেবল সন্নিবেশ, প্রতিস্থাপন এবং মোড কমান্ড ব্যবহার করতে পারেন । :abbrevসংক্ষিপ্ত বিবরণ তৈরি করার জন্য ব্যবহৃত হয় (ওরম শর্টকাট যা ভিম প্রসারিত করতে পারে)। সংক্ষিপ্ত expanation ব্যবহার করা :map/ :noremapম্যাপিং তৈরি করতে :abbrev/ :noreabbrevবর্ণমালা তৈরি করার জন্য বা যখনই আপনি চান আপনার টাইপিং আউট প্রসারিত করতে তেজ।


1
noreম্যাপ কমান্ডের ফর্মগুলি ব্যবহার করার একমাত্র কারণ হ্যাঙ্গ এড়ানো এড়ানো নয় । এগুলি ব্যবহারের আর একটি (এবং আমার মতে আরও গুরুত্বপূর্ণ) কারণটি হ'ল তারা আপনার ম্যাপিংকে নির্ভরযোগ্য / পূর্বাভাসযোগ্য করে তোলে। আপনি যদি সরল ফর্মটি ব্যবহার করেন এবং এর মধ্যে rhsএমন কী রয়েছে যা অন্য কোনও কিছুর সাথে ম্যাপ করা যায়, তবে আপনার ম্যাপিংয়ের উদ্দেশ্য ছাড়া সম্পূর্ণ ভিন্ন আচরণ থাকতে পারে।
ধনী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.