পাঠ্য বস্তু হিসাবে আয়তক্ষেত্রাকার অঞ্চলগুলি?


11

আইএম-তে কোনও পাঠ্য বস্তু সংজ্ঞা দেওয়া সম্ভব যা আয়তক্ষেত্রাকার অঞ্চলে কাজ করবে?

উদাহরণস্বরূপ, ধরুন আমি পাঠ্যের কলামগুলি উল্লম্বভাবে সারিবদ্ধ করেছি:

column 1 co    column 2 col
lumn 1 colu    umn 2 column
mn 1 column    2 column 2 c
1 column 1     olumn 2 colu

cকলামগুলির জন্য কোনও টেক্সটবজেক্টকে সংজ্ঞায়িত করা সম্ভব হবে , যেমন dacকোনও কলাম মুছে yacফেলবে , এটি ইয়েঙ্ক করবে, cacপরিবর্তন করবে, ইত্যাদি?

(আমি একটি আয়তক্ষেত্রাকার অঞ্চল নির্বাচন কন্ট্রোল-ভি সম্পর্কে জানতে, এবং আমি জানি তুমি তারপর ব্যবহার করতে পারেন d, yইত্যাদি মুছে দিতে Yank ইত্যাদি নির্বাচিত অঞ্চল। কিন্তু আমি কি টেক্সট বস্তু ব্যবহার সম্ভব সম্পর্কে বিশেষভাবে কৌতুহলী।)


6
এটা কি সম্ভব? কাফনের কাপড়! কেস এবং পয়েন্ট: টেক্সটবজ-ওয়ার্ড-কলাম.ভিম
পিটার রিনকার

@ পিটাররিনেকার এটি দুর্দান্ত, তবে আমি অবাক হয়েছি যে কানার টেক্সটবজ-ব্যবহারকারীর সুবিধা নেওয়ার পক্ষে এটি সহজ করা যায় না ।
lcd047

ধন্যবাদ, পিটার, ঠিক সেই ধরণের উদাহরণটি আমি খুঁজছিলাম।
লেয়া ভেলম্যান

2
এই একটি উত্তর :) করতে @PeterRincker
Vitor থেকে

উত্তর:


5

হ্যাঁ, এটি সম্ভব। @PeterRincker প্লাগইন প্রস্তাব দেওয়া textobj শব্দ-কলাম চারটি টেক্সট বস্তু (সংজ্ঞায়িত ic, ac, iC, এবং aCশব্দ-ভিত্তিক কলাম জন্য)।

এই কার্যকারিতার পিছনে ধারণাটি হ'ল একটি ফাংশন তৈরি করা যা কলাম ভিত্তিক গতিকে সংজ্ঞায়িত করে এবং তারপরে এই ফাংশনটি যথাযথভাবে ভিজ্যুয়াল / সিলেক্ট মোড ম্যাপিংস এবং অপারেটর মুলতুবি থাকা ম্যাপিংয়ের জন্য ম্যাপ করে। উদাহরণ হিসাবে উল্লিখিত প্লাগইনটি ব্যবহার করতে, এটি নিম্নলিখিত ম্যাপিংগুলি তৈরি করে:

xnoremap <silent> ac :<C-u>call TextObjWordBasedColumn("aw")<cr>
xnoremap <silent> aC :<C-u>call TextObjWordBasedColumn("aW")<cr>
xnoremap <silent> ic :<C-u>call TextObjWordBasedColumn("iw")<cr>
xnoremap <silent> iC :<C-u>call TextObjWordBasedColumn("iW")<cr>
onoremap <silent> ac :call TextObjWordBasedColumn("aw")<cr>
onoremap <silent> aC :call TextObjWordBasedColumn("aW")<cr>
onoremap <silent> ic :call TextObjWordBasedColumn("iw")<cr>
onoremap <silent> iC :call TextObjWordBasedColumn("iW")<cr>

এখানে TextObjWordBasedColumn(...)কলামের গতি সংজ্ঞায়িত করা হয় এবং সাথে ভিজ্যুয়াল / সিলেক্ট মোড xnoremapএবং অপারেটর মুলতুবি মোড উভয়কে ম্যাপ করা হয় onoremap। নোট করুন যে ইনডেন্টেশন পরিচালনা করতে এবং উপযুক্ত গতির সীমানা সন্ধান করতে ফাংশনটি কিছুটা জটিল।


4

এটা কি সম্ভব? কাফনের কাপড়! কেস এবং পয়েন্ট: টেক্সটবজ-ওয়ার্ড-কলাম.ভিম

কীভাবে আপনার নিজের টেক্সট অবজেক্ট তৈরি করবেন

সাধারণত ভিজ্যুয়াল মোড একটি নতুন পাঠ্য অবজেক্ট তৈরি করতে ব্যবহৃত হয়। ভিজ্যুয়াল মোড লাইন-ওয়াইজ, চরিত্র-ভিত্তিক (সাধারণত), বা ভিজ্যুয়াল-ব্লক হতে পারে। আপনার যা প্রয়োজন হবে তার বুনিয়াদি এখানে:

  • একটি অব্যবহৃত কী সংমিশ্রণ সাধারণত a{char}বা i{char}যেখানে {char}উভয় বর্ণনামূলক এবং অব্যবহৃত থাকে। উদাহরণস্বরূপ i/যেমন এর মধ্যে একটি পাঠ্য বস্তু /
  • আপনার পাঠ্য-অবজেক্টটির সূচনা করার জন্য একটি উপায় প্রয়োজন। যেমনT/
  • আপনার পাঠ্য-অবজেক্টের শেষ সন্ধানের জন্য একটি উপায় প্রয়োজন। যেমনt/
  • একটি ভিজ্যুয়াল মোড চয়ন করুন। যেমনv
  • এর মাধ্যমে ভিজ্যুয়াল মোড (কেবল) ম্যাপিং তৈরি করুন xnoremap
  • মোড ম্যাপিংয়ের অপেক্ষাকৃত অপারেটর তৈরি করুন যা ভিজ্যুয়াল মোড ম্যাপিংয়ের মাধ্যমে onoremapএবং ব্যবহার করে :normal

এখন আমাদের সাধারণ উদাহরণের জন্য i/যা /এর মধ্যে একটি পাঠ্য-বস্তু তৈরি করে :

xnoremap i/ :<c-u>normal! T/vt/<cr>
onoremap i/ :normal vi/<cr>

যতক্ষণ না আপনি মৌলিক উপাদানগুলি অনুসরণ করেন আপনি সমস্ত ধরণের জিনিসের জন্য পাঠ্য-বস্তু তৈরি করতে পারেন।

ভিএম-টেক্সটবজ-ব্যবহারকারীর সাথে উন্নত পাঠ্য-অবজেক্ট তৈরি

তেজ-textobj-ইউজার প্লাগইন একটি সাধারণ উপায় আরো একটি ঘোষণামূলক ফ্যাশন কাস্টম টেক্সট বস্তু সংজ্ঞায়িত করতে প্রদান করে। উদাহরণস্বরূপ এখানে একটি পিএইচপি ট্যাগ পাঠ্য-অবজেক্ট রয়েছে:

call textobj#user#plugin('php', {
\   'code': {
\     'pattern': ['<?php\>', '?>'],
\     'select-a': 'aP',
\     'select-i': 'iP',
\   },
\ })

তেজ-textobj-ইউজার সহ আরও সহায়তার জন্য তার সহায়তা নথি দেখুন: :h textobj-user-introduction

আরও সাহায্যের জন্য

:h map-overview
:h visual-start
:h :norm

পাশাপাশি নতুন টেক্সট অবজেক্ট তৈরি করে ভিম উইকি পৃষ্ঠা।

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