সিআই "উদ্ধৃত অঞ্চল এবং সিআই এর বাইরে থাকতে পারে (কেবলমাত্র প্রথম বন্ধনীর ভিতরে কাজ করে)?


27

ci"কার্সারটি ব্যবহার করার সময় ডাবল উদ্ধৃত অঞ্চলে থাকতে হবে না।

|String somestring = "some text";

পাইপটি কার্সারের অবস্থান হিসাবে ধরে নেওয়া, ci"এটি উদ্ধৃত অঞ্চলে লাফিয়ে তুলবে।

অন্যদিকে, ব্যবহার করার সময় ci(, কার্সারটি অবশ্যই কাজ করার জন্য প্রথম বন্ধনীগুলির অভ্যন্তরে থাকতে হবে এবং কার্সারটিকে তাদের অভ্যন্তরে স্থানান্তরিত করবে না।

আচরণে এই পার্থক্যের কারণ কী? আমি ধরে নিয়েছি কীগুলি ম্যাপ করার একটি উপায় আছে যাতে এই আচরণটি উপস্থিত থাকে। এটি করার কোনও অসুবিধা আছে কি?


উত্তর:


25

এখানে মূল পার্থক্যটি হ'ল প্যারেন্টেথিকাল স্টেটমেন্টগুলি (টার্গেট করে ci() বাসা বাঁধতে পারে, যখন উদ্ধৃত স্ট্রিংগুলি (টার্গেট করা ci") পারে না।

যদি আপনার কার্সারটি কোনও প্যারেন্টিফিক্যাল স্টেটমেন্টের বাইরে থাকে তবে এটি অন্য কোনওটির অভ্যন্তরে থাকতে পারে। উদাহরণস্বরূপ ( *কার্সারের অবস্থান চিহ্নিত করে):

$foo = array(
    'x' => ar*ray(1, 2, 3),
);

কার্সারটি যে রেখাটিতে রয়েছে সেটিতে রয়েছে (1, 2, 3)তবে কার্সারটি বৃহত্তর array(...)ব্লকের ভিতরে রয়েছে । এই ক্ষেত্রে, বৃহত্তর এক জন্য উপযুক্ত লক্ষ্য ci(

যদি আপনার কার্সারটি কিছু উদ্ধৃত স্ট্রিংয়ের বাইরে থাকে, যেহেতু সেগুলি বাসা বাঁধতে পারে না, তাই করার মতো সঠিক কোনও বুদ্ধিমান জিনিস নেই। সুতরাং, ভিম সুবিধা গ্রহণ করে এবং লাইনে প্রথম উদ্ধৃত স্ট্রিংটি খুঁজে পায়।


10

টেক্সট বস্তু (উদ্ধৃতি পরিবার i', i", a', এবং a") এ যে, তারা শুধুমাত্র বর্তমান লাইন তাকান টেক্সট বস্তুর বাকি তুলনায় ভিন্ন। এই কারণে, কার্সারটি উদ্ধৃতিগুলির মধ্যে না থাকার জন্য পছন্দটি করা হয়েছিল। পরিবর্তে, যখন কার্সারটি ইতিমধ্যে কোনওটির ভিতরে না থাকে তখন ভিম একটি উদ্ধৃত স্ট্রিংটি সন্ধান করার জন্য লাইনের মধ্যে এগিয়ে অনুসন্ধান করবে।

কিছু প্যাচগুলির চারপাশে একটি আলোচনা রয়েছে যা ব্লক ভিত্তিক পাঠ্য অবজেক্টগুলির জন্যও এই অগ্রণী অনুসন্ধানের আচরণটি কার্যকর করতে দেয়।


8

অন্যান্য উত্তরগুলি কেন এমনটি ঘটে তা কভার করে । এটি চারপাশে কাজ করার একটি দুর্দান্ত উপায়।

ওয়েল / টার্গেটস.ভিম । আমি সম্প্রতি এই প্লাগইনটি পেয়েছি এবং আমি মনে করি এটি অত্যন্ত আন্ডাররেটেড। এটি একটি নতুন পাঠ্য বস্তুর প্রদান করে: din(স্মৃতিসম্বন্ধীয়। (ঘ) elete (ঝ) nside (ঢ) EXT "(" এই যেমন হিসাবে অন্যান্য অপারেটর ও বিভিন্ন বস্তু, সঙ্গে সামঞ্জস্যপূর্ণ an(, in", il((শেষ প্রথম বন্ধনী ভিতরে)

এটি এর ডিফল্ট আচরণকেও ওভাররাইড করে i(যাতে এটি প্রথমে কার্সার বন্ধনীতে রয়েছে কিনা তা দেখতে এবং তারপরে এটি যদি না হয় তবে একইভাবে কাজ করে in(। এই আচরণটি চালু বা বন্ধ করা যেতে পারে। উদাহরণ স্বরূপ:

def foo(bar):
^cursor here

টাইপিং ci(একই হিসাবে কাজ করে cin(, কার্সার প্রথম বন্ধনী হিসাবে নেই in

def foo( ):
        ^Cursor here, and in insert mode

এটি একটি গণনাও গ্রহণ করে:

def foo(bar):           #Define function foo(bar)
^cursor here

টাইপিং c2in(:

def foo(bar):           #Define function foo( )
                                             ^cursor here

এটি একটি নতুন অবজেক্ট, "আর্গুমেন্ট" সরবরাহ করে। উদাহরণস্বরূপ, এর danaঅর্থ "পরবর্তী যুক্তির আশেপাশে মুছুন"। এটি একটি গণনাও গ্রহণ করে। উদাহরণ স্বরূপ:

def foo(arg1, arg2, BADarg3):
^ cursor here

টাইপিং d3ana:

def foo(arg1, arg2):
                  ^ cursor here

এই প্লাগইনটিতে রয়েছে আরও অনেকগুলি বৈশিষ্ট্য, তবে এগুলি হ'ল মৌলিক বৈশিষ্ট্য।


1
নিস! এটি একটি ভাল সংযোজন। আমাকে এটি পরীক্ষা করে দেখতে হবে।
রিভারটি

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