Vi এ উদ্ধৃতিগুলির মধ্যে পাঠ্য কীভাবে প্রতিস্থাপন করবেন


106

বলুন আমার কাছে কোডের এই লাইন রয়েছে:

$query = "SELECT * FROM table";

Vi / vim এ এমন কোনও কমান্ড রয়েছে যা উদ্ধৃতিগুলির মধ্যে সমস্ত কিছু তাত্ক্ষণিকভাবে মুছে ফেলতে পারে এবং এর মধ্যে কার্সারটি স্থাপন করতে পারে যাতে আমি টাইপ করা শুরু করতে পারি?

উত্তর:


182

ব্যবহার করুন ci", যার অর্থ: ডাবল উদ্ধৃতিগুলির মধ্যে কী পরিবর্তন করুন।

আপনি একইভাবে অন্যান্য পাঠ্য অবজেক্টগুলিকেও পরিচালনা করতে পারেন, যেমন:

  • ci' - একক উদ্ধৃতি ভিতরে পরিবর্তন করুন
  • ciw - একটি শব্দের ভিতরে পরিবর্তন
  • ci( - বন্ধনী ভিতরে পরিবর্তন
  • dit - এইচটিএমএল ট্যাগের ভিতরে মুছুন ইত্যাদি

বিভিন্ন ভিএম টেক্সট অবজেক্ট সম্পর্কে আরও এখানে


2
দেখে মনে হচ্ছে কেবল এটিই কাজ করছে vimতবে তা নয় vi। (নিশ্চিত নয়)
ইভান চৌউ

আমার জন্য এটি কেবল বর্তমান লাইনে কাজ করে, নথির কোথাও নয়।
এবং অবশেষে

তাহলে কোন আজ্ঞাটি পিছনের দিকে এটি করবে? আপনি যদি কার্সারের পিছনে থাকা উদ্ধৃতিগুলির অভ্যন্তরের পাঠ্যটি প্রতিস্থাপন করতে চান That
ডিটিবার্গেস

1
@ ডিটিবার্গেস: একটি উপায় F"ci"
ইউজিন ইয়ারমশ

সিআই এবং সিআই "ভাল কাজ করে, তবে সিআই (আমার পক্ষে কাজ করে না। কারও ধারণা নেই কেন?
ভিরাম ভারদানিয়ান

24

আপনি উদ্ধৃতিগুলির মধ্যে নির্বাচন করতে পারেন এবং তারপরে ( d), পরিবর্তন ( c) ইত্যাদি মুছতে পারেন

vi"

একইভাবে, আপনি ব্রেস, বন্ধনী, এক্সএমএল উপাদান ইত্যাদি প্রতিস্থাপন করতে পারেন:

vi(
vi{
vit

বা শুধু পরিবর্তন / মুছে ফেলতে সংশ্লিষ্ট না di", ci"ইত্যাদি বদলে aজন্য i(যাতে আপনি চিহ্নিত করতে বা বন্ধনী পরিবর্তন করতে হবে পার্শ্ববর্তী উপাদান encompassing এবং উদাহরণস্বরূপ, বিষয়বস্তু)


5

আমি একটি প্লাগইন তৈরি করেছি vim-textobj-quotes: https://github.com/beloglazov/vim-textobj-quotes

এটি যে কোনও প্রকারের উদ্ধৃতিগুলির নিকটতম জোড়াগুলির জন্য পাঠ্য সামগ্রী সরবরাহ করে এবং একাধিক লাইনের বিস্তৃত উদ্ধৃতিগুলিকে সমর্থন করে। কেবলমাত্র এটি ব্যবহার করা iqবা aqএটি আপনাকে একক ('), ডাবল ("), বা পিছনে (`) উদ্ধৃতিগুলি বর্তমানে কার্সারকে ঘিরে রেখেছে, কার্সারের সামনে বা পিছনে রয়েছে (অগ্রাধিকার ক্রমে) অন্য কথায়, উদ্ধৃতিতে পৌঁছানোর জন্য এটি এগিয়ে বা পিছনের দিকে লাফিয়ে যায়।

উদাহরণগুলি দেখে বোঝা আরও সহজ (কার্সারটি দিয়ে দেখানো হয়েছে |):

  1. আগে: foo '1, |2, 3' bar; চাপ দেওয়ার পরে diq:foo '|' bar
  2. আগে: foo| '1, 2, 3' bar; চাপ দেওয়ার পরে diq:foo '|' bar
  3. আগে: foo '1, 2, 3' |bar; চাপ দেওয়ার পরে diq:foo '|' bar
  4. আগে: foo '1, |2, 3' bar; চাপ দেওয়ার পরে daq:foo | bar
  5. আগে: foo| '1, 2, 3' bar; চাপ দেওয়ার পরে daq:foo | bar
  6. আগে: foo '1, 2, 3' |bar; চাপ দেওয়ার পরে daq:foo | bar

উপরের উদাহরণগুলি একক উদ্ধৃতির জন্য দেওয়া হয়েছে, ডাবল (") এবং পিছনে (`) উদ্ধৃতিগুলির জন্য প্লাগইন ঠিক একইভাবে কাজ করে।

: আপনি অন্য কোন অপারেটর ব্যাবহার করতে পারেন ciq, diq, yiq, viq, ইত্যাদি

আরও তথ্যের জন্য দয়া করে উপরের লিঙ্ক করা গিথুব পৃষ্ঠাটি দেখুন।


3

ইতিমধ্যে উদ্ধৃতিগুলির ভিতরে থেকে আপনি করতে পারেন

di"

এটি ভিতরে মুছে ফেলা হিসাবে পড়ুন "


6
কার্সারটি ডাবল-কোটেড স্ট্রিংয়ের মধ্যে থাকা প্রয়োজন নয়, কারণ কমান্ডটি লাইনে প্রথম এই স্ট্রিংটি পরিবর্তন করতে ডিফল্ট হয়
ইউজিন ইয়ারম্যাশ

1
ধন্যবাদ এটি জানতে খুব ভাল! কেবল দেখানোর জন্য আমার কিছুটা আরও মনোযোগ সহকারে পড়া উচিত। :)
স্যাম পিসি

3

ব্রায়ানের উত্তরের সাথে যুক্ত হয়ে আপনি নতুন মানটিও p(পেস্ট) এবং y(ইয়াঙ্ক) করতে পারেন, তাই যদি আপনি অন্য মানের সাথে কোটগুলির মানটি প্রতিস্থাপন করতে চান তবে আপনি yi"যে নির্বাচনটি অনুলিপি করতে চান সেটি করতে পারেন, vi"অঞ্চলটি নির্বাচন করতে যেটি আপনি প্রতিস্থাপন করতে চান এবং তারপরে কেবল pমানটি যথাযথভাবে প্রতিস্থাপন করতে পারেন।


0

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

T"ct"

কোথায়:

টি "-" অক্ষরের ঠিক পরে ফিরে যান

সি - কমান্ড পরিবর্তন করুন

t "- সি কমান্ডের জন্য শেষ অবস্থান সরবরাহ করুন, যেখানে এটি অক্ষর মুছে ফেলা বন্ধ করবে, অন্য কথায় পরিসীমা পরিবর্তন করতে হবে

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