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


1112

মধ্যে পার্থক্য কি remap, noremap, nnoremapএবং vnoremapতেজ মধ্যে ম্যাপিং কমান্ড?


1
সতর্কতা vnoremapএবং vmapভিজ্যুয়াল এবং নির্বাচন মোডে কাজ করুন। শুধুমাত্র ভিজ্যুয়াল মোডে ম্যাপিং করতে, xmapএবং ব্যবহার করুন xnoremap
বেনোইট

উত্তর:


1624

remapম্যাপিংগুলি পুনরাবৃত্তভাবে কাজ করে এমন একটি বিকল্প । ডিফল্টরূপে এটি চালু আছে এবং আমি আপনাকে সেভাবেই ছেড়ে দেওয়ার পরামর্শ দিচ্ছি। বাকিগুলি হ'ল ম্যাপিং কমান্ডগুলি নীচে বর্ণিত :

:mapএবং :noremapহয় রিকার্সিভ এবং অ রিকার্সিভ বিভিন্ন ম্যাপিং কম্যান্ডের সংস্করণ। এর অর্থ হ'ল আপনি যদি তা করেন:

:map j gg
:map Q j
:noremap W j

jম্যাপ করা হবে ggQহবে আরো ম্যাপ করা যেতে gg, কারণ jরিকার্সিভ ম্যাপিং জন্য সম্প্রসারিত হবে। (এবং না ) তে Wম্যাপ করা হবে কারণ অ-পুনরাবৃত্ত ম্যাপিংয়ের জন্য প্রসারিত হবে না।jggj

এখন মনে রাখবেন যে ভিম একটি মডেল সম্পাদক । এটির একটি সাধারণ মোড রয়েছে, ভিজ্যুয়াল মোড এবং অন্যান্য মোড রয়েছে।

ম্যাপিংয়ের এই সেটগুলির প্রত্যেকটির জন্য, একটি ম্যাপিং রয়েছে যা সাধারণ, ভিজ্যুয়াল, নির্বাচন করুন এবং অপারেটর মোডগুলিতে ( :mapএবং :noremap) কাজ করে, একটি যা সাধারণ মোডে ( :nmapএবং :nnoremap) কাজ করে, একটি ভিজ্যুয়াল মোডে ( :vmapএবং :vnoremap) এবং এ জাতীয়।

এ সম্পর্কে আরও দিকনির্দেশনার জন্য, দেখুন:

:help :map
:help :noremap
:help recursive_mapping
:help :map-modes

8
আপনার উত্তরের জন্য ধন্যবাদ! এছাড়াও, যখন পুনরাবৃত্তির ব্যবহার হয় এবং কখন পুনরাবৃত্তি করা হয়?
চেতন

14
@ চেতান: আপনি কী অর্জন করতে চান তা নির্ভর করে। আমি প্রায়শই নন-রিকার্সিভ ব্যবহার করার প্রবণতা রাখি তবে আপনি যদি অ-পুনরাবৃত্ত ব্যবহার করে তুলনামূলকভাবে জটিল ম্যাপিং সংজ্ঞায়িত করেন এবং অন্য ম্যাপিং যা প্রথম ম্যাপিং সবকিছু করে এবং এর চেয়ে আরও বেশি কিছু করে থাকে তবে এটি পুনরুক্তি ম্যাপিং ব্যবহার করা আরও সহজ হতে পারে অ-পুনরাবৃত্তকারীকে পুরোটি পুনরায় টাইপ করার পরিবর্তে আসলটি (বিশেষত যদি আপনাকে তখন মূলটিটি টুইট করতে হবে)।
ডাঃআল

10
আমি noremapকিছু বিপরীত বলে ধরেছিলাম map। আমি এমন কিছু বোঝাতে চাই যা একটি ম্যাপিং সরিয়ে দেয়। উত্তরের জন্য ধন্যবাদ. এটি আমাকে পরিষ্কার করে দিয়েছে
পবন মঞ্জুনাথ

4
সংখ্যাগরিষ্ঠ ব্যবহারের ক্ষেত্রে এটি গুরুত্বপূর্ণ নয়, তবে এটি লক্ষ করা উচিত যে :map, ইত্যাদি সমস্ত মোডে ঠিক কাজ করে না , ঠিক সমস্ত সাধারণ ক্ষেত্রে (বিশেষত, সাধারণ মোড, ভিজ্যুয়াল মোড, নির্বাচন মোড এবং অপারেটর-মুলতুবি মোড)। আপনি সন্নিবেশ, কম্যান্ড-লাইন, বা ল্যাঙ-ARG মোডে কাজ করার জন্য একটি ম্যাপিং চান, আপনি ব্যবহার করতে হবে :map!: ইত্যাদি (সূত্র vimdoc.sourceforge.net/htmldoc/map.html#map-overview )
কেন জাঁতা

3
@whytheq নোরেম্যাপ = অ-পুনরাবৃত্ত ম্যাপিং
ড্যান বেচার্ড

281

আমি মনে করি ভিম ডকুমেন্টেশনের এই কমান্ডগুলির নামকরণের পিছনে অর্থটি ব্যাখ্যা করা উচিত ছিল। কেবল তারা আপনাকে কী বলছে তা আপনাকে নামগুলি মনে রাখতে সহায়তা করে না।

mapসমস্ত পুনরাবৃত্তাকার ম্যাপিং কমান্ডগুলির "মূল"। মূল ফর্মটি "সাধারণ", "ভিজ্যুয়াল + নির্বাচন", এবং "অপারেটর-মুলতুবি" মোডগুলিতে প্রয়োগ হয়। ( ভাষাবিজ্ঞানের মতোই আমি "মূল" শব্দটি ব্যবহার করছি ।)

noremapসমস্ত নন-রিকার্সি ম্যাপিং কমান্ডের "মূল"। মূল ফর্মটি একই মোডে প্রযোজ্য map। ( nore"অ-পুনরাবৃত্ত" বোঝার উপসর্গটির কথা চিন্তা করুন ))

(নোট করুন !মত মোড এছাড়াও আছেmap! সন্নিবেশ ও কমান্ড-লাইন প্রয়োগ করতে প্রযোজ্য )

এই প্রসঙ্গে "পুনরাবৃত্ত" বলতে কী বোঝার জন্য নীচে দেখুন।

মোডিংয়ের মতো মোড লেটার প্রস্তুত করা nম্যাপিংয়ের মোডগুলিতে কাজ করে। এটি প্রযোজ্য মোডগুলির তালিকার একটি উপসেট বেছে নিতে পারে (উদাহরণস্বরূপ কেবল "ভিজ্যুয়াল"), বা অন্যান্য মোডগুলি বেছে mapনিতে পারে যা প্রয়োগ হয় না (যেমন "সন্নিবেশ")।

ব্যবহার help map-modesআপনাকে কয়েকটি টেবিল প্রদর্শন করবে যা ম্যাপিংয়ের জন্য কোন মোডগুলি প্রয়োগ করে তা নিয়ন্ত্রণ করতে হবে explain

মোড অক্ষর:

  • n: শুধুমাত্র সাধারণ
  • v: চাক্ষুষ এবং নির্বাচন করুন
  • o: অপারেটর-বিচারাধীন
  • x: কেবলমাত্র ভিজ্যুয়াল
  • s: শুধুমাত্র নির্বাচন করুন
  • i: .োকান
  • c: কমান্ড-লাইন
  • l: সন্নিবেশ, কমান্ড-লাইন, রিজেক্সপ-সন্ধান (এবং অন্যান্য।

" পুনরাবৃত্তি " এর অর্থ ম্যাপিং কোনও ফলাফলে প্রসারিত হয়, তারপরে ফলাফলটি অন্য ফলাফলে প্রসারিত করা হয়, ইত্যাদি।

এর মধ্যে একটি সত্য হলে সম্প্রসারণ বন্ধ হয়ে যায়:

  1. ফলাফল আর কিছুই ম্যাপ করা হয় না।
  2. একটি পুনরাবৃত্তিযোগ্য ম্যাপিং প্রয়োগ করা হয়েছে (অর্থাত "নোরম্যাপ" [বা এর একটি জাতীয় চূড়ান্ত সম্প্রসারণ)।

সেই সময়ে, ভিমের চূড়ান্ত ফলাফলের ডিফল্ট "অর্থ" প্রয়োগ করা হয় / সম্পাদিত হয়।

" নন-রিকার্সিভ " অর্থ ম্যাপিংটি কেবল একবার প্রসারিত হয় এবং ফলাফলটি প্রয়োগ / সম্পাদিত হয়।

উদাহরণ:

 nmap K H
 nnoremap H G
 nnoremap G gg

উপরের কারণগুলিতে Kপ্রসারিত হবে H, তারপরে Hপ্রসারিত Gএবং বন্ধ হবে। এটি বন্ধ হয়ে যায় কারণ এটি nnoremapপ্রসারিত হয় এবং সঙ্গে সঙ্গে বন্ধ হয়ে যায়। এর অর্থ Gকার্যকর করা হবে (অর্থাত "শেষ লাইনে ঝাঁপ দাও")। একটি এক্সপেনশন চেইনে সর্বাধিক একটি পুনরাবৃত্ত ম্যাপিং প্রয়োগ করা হবে (এটি হবে শেষ বিস্তৃতি হবে)।

এর ম্যাপিং Gকরার ggপ্রযোজ্য বাটনটি চাপলে G, কিন্তু না বাটনটি চাপলে K। এই ম্যাপিংটি পুনরাবৃত্তভাবে ম্যাপ করা হয়েছিল Kকিনা তা নির্বিশেষে টিপতে কোনও প্রভাব ফেলবে Gনা, যেহেতু এটি লাইন 2 লাইনটি প্রসারণের কারণকে Kথামিয়েছে, সুতরাং লাইন 3 ব্যবহার করা হবে না।


4
একটি জিনিস: mapকেবলমাত্র সাধারণ, চাক্ষুষ, নির্বাচন এবং অপারেটর-মুলতুবি মোডগুলিতে প্রযোজ্য, সমস্ত মোডে নয়।
ব্রায়ান ম্যাকচ্যাটন

1
উত্তর গ্রহণ করা উচিত।
টাইকোলিজ

এটি গ্রহণযোগ্য চেয়ে একটি উপায় ভাল উত্তর।
মিলমাইক

19

একটি পার্থক্য হ'ল:

  • :map না nvo== সাধারণ + (ভিজ্যুয়াল + নির্বাচন) + অপারেটর মুলতুবি
  • :map!না ic == + কম্যান্ড লাইন মোডে সন্নিবেশ

যেমন help map-modesটেবিলগুলিতে বলা হয়েছে ।

সুতরাং: mapসমস্ত মোডে মানচিত্র দেয় না

সমস্ত মোডে মানচিত্র করতে আপনার :mapএবং উভয়ই দরকার :map!


5
সাবধান !! command modeযেমন এর আরেকটি anotherতিহাসিক নাম normal mode। অধ্যায় 5 vimdoc.sourceforge.net/htmldoc/intro.html#vim-modes-intro )। সংক্ষিপ্ত বিবরণ 'c' 'কমান্ড-লাইন' এর জন্য। অন্য কথায়, ডিফল্টরূপে ইন: map! lhs rhs যাও recursively জন্য RHS থেকে LHS মানচিত্র সন্নিবেশ + কম্যান্ড লাইন মোড। Unless /vimrc এ remapডিফল্ট বিকল্পটি স্পষ্টভাবে অক্ষম না করা হয় set noremap[!]। সেক্ষেত্রে ম্যাপিং পুনরাবৃত্ত হবে না (পরামর্শ দেওয়া হবে না)।
সিবিহে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.