আমি কীভাবে ভিমস্ক্রিপ্টের একটি ভিজ্যুয়াল নির্বাচন উত্স করতে পারি?


12

আমার যদি আমার ভি্মিআরসিআর লাগানোর আগে আমি পরীক্ষা করতে চাই এমন কয়েকটি লাইন ভার্সস্ক্রিপ্ট থেকে থাকে, তবে কি দর্শনীয়ভাবে নির্বাচন করা সম্ভব, তবে সেগুলি উত্স করতে চান?

আমি চেষ্টা করেছি

  • ভিজ্যুয়াল সিলেকশন করুন v, তারপরে সিলেকশন ইত্যাদি করার গতিগুলি দিন
  • :'<,'>so

কিন্তু ভিম একটি ত্রুটি দেয়

কোন সীমা অনুমোদিত নয়

এছাড়াও

:'<,'>w | so

দেয়

ব্যবহার করুন! আংশিক বাফার লিখতে

আমি কীভাবে চাক্ষুষভাবে নির্বাচিত ভিমস্ক্রিপ্ট উত্স করতে পারি?

উত্তর:


11

কমান্ড লাইনে হিট করুন <C-u>তারপর টাইপ করুন @*এবং প্রবেশ করুন।

<C-u>'<,'>যদি কিছু পাঠ্যটি চাক্ষুষভাবে নির্বাচন করা হয় তবে স্বয়ংক্রিয়ভাবে সন্নিবেশ করা ভিজ্যুয়াল সীমাটি মুছে ফেলবে ।

:@**এই মুহুর্তে চাক্ষুষভাবে নির্বাচন করা যা যা আছে তাতে নিবন্ধকের সামগ্রীর সম্পাদন করবে ।

এমনকি যে পাঠ্যটি নির্বাচিত / হাইলাইট করা হয়েছে তা আপনার ওয়েব ব্রাউজারে রয়েছে (ফায়ারফক্স, ক্রোম, ...), এটি কাজ করবে, *রেজিস্টার আপনাকে এটি সরাসরি ভিএম-এ অ্যাক্সেস করার অনুমতি দেবে।


যদি আপনার পাঠ্যটি একটি ভিএম বাফারে নির্বাচিত হয় তবে অন্য একটি সমাধান হ'ল এটি কোনও নাম রেজিস্টারে অনুলিপি করুন, উদাহরণস্বরূপ টাইপ করে একটি রেজিস্টার "ay

তারপরে, কমান্ড লাইনে, টাইপ করুন: <C-r>aএবং লিখুন।
Ctrl+ rআপনাকে চরিত্রটি দ্বারা প্রতিনিধিত্ব করে এক ধরণের প্রম্পট দেবে "(আরও তথ্য পড়ার জন্য :h c_Ctrl-r)।
এই নতুন প্রম্পটে, আপনি যদি কোনও নিবন্ধের নাম দেন তবে এর সামগ্রীটি কমান্ড লাইনে সন্নিবেশ করা হবে, যেখানে আপনি মৃত্যুদন্ড কার্যকর করার আগে এটি সম্পাদনা করতে সক্ষম হবেন।


এছাড়া আপনি একটি রেজিস্টার উল্লেখ না করে কিছু লেখা অনুলিপি, এটা নামহীন রেজিস্টার থেকে অ্যাক্সেস করা যাবে "

সুতরাং ধরুন আপনি কোনও ফাইলে ভাইমস্ক্রিপ্টের একটি লাইন পেয়েছেন এবং এটি দ্রুত উত্স পেতে চান, আপনি এটি দিয়ে অনুলিপি করতে পারেন Y, তারপরে এটি কমান্ড লাইনে উত্স: :<C-r>"এবং প্রবেশ করুন।

অবশেষে, আপনি যদি এই শেষ সমাধানটি ব্যবহার করেন তবে কেবল একটি সমস্যা রয়েছে যা আপনাকে অবশ্যই সচেতন করতে হবে।
আপনি ভালো কমান্ড লাইন একটি অদ্ভুত চরিত্র দেখতে পান, তাহলে ^M, এটা ক্যারেট স্বরলিপি গাড়ি ফেরত করুন। আপনার এটি মুছে ফেলা উচিত, অন্যথায় আপনি সম্ভবত একটি ত্রুটি পাবেন।

সংক্ষেপে, আপনি:

  1. সঙ্গে আপনার লিমিটেড লাইন অনুলিপি Y
  2. কমান্ড মোডের সাথে স্যুইচ করুন :
  3. <C-r>রেজিস্টার প্রম্পটে প্রবেশ করতে আঘাত
  4. "নামবিহীন রেজিস্টার কল করতে টাইপ করুন
  5. ^Mচরিত্রটি মুছতে ব্যাকস্পেসে আঘাত করুন
  6. এবং এন্টার চাপুন।

1
খুব সুন্দর! : ডি সুন্দরভাবে কাজ করে - আমি এর আগে কখনও আসিনি @*, ধন্যবাদ!
the_velour_fog

আমি আনন্দিত এটি আপনাকে সাহায্য করেছে। আমি আরও একটি সমাধান প্রস্তাব দেওয়ার জন্য উত্তরটি সম্পাদনা করেছি।
saginaw

1
খুব সুন্দর, আমি : <C-r>a এটি ব্যবহার করার বিষয়ে আপনার পরামর্শটি চেষ্টা করেছি আসলে খুব ভাল কাজ করেছে :) আমি অনুমান করি যে ভিম ^Mলাইন রিটার্ন হিসাবে পড়বে - এবং প্রত্যেককে তার নিজস্ব লাইন / কমান্ড হিসাবে কার্যকর করা হয়েছিল?
the_velour_fog

এটি একটি ভাল প্রশ্ন, সত্যই আমি জানি না। সাধারণত আমি যদি এই চরিত্রটি মুছতে না পারি তবে আমার ত্রুটি রয়েছে। আমি আনন্দিত এটি ত্রুটি ছাড়াই আপনার জন্য কাজ করে। সম্ভবত এই বিষয়ে আরও জ্ঞানযুক্ত কেউ আমাদের ব্যাখ্যা করবে যে ভিম কীভাবে এই জাতীয় বিশেষ চরিত্রগুলির সাথে আচরণ করে।
saginaw

2

আমি আসলে এটি কিছুটা আলাদাভাবে করি, আমি আমার ভিএমআরসি-তে সম্পাদনাগুলি তৈরি করি এবং প্রতিবার এটি লেখার পরে পুনরায় উত্স তৈরি করি। (আমার কাছে ভিএমআরসি ফাইলগুলির একটি ক্যাসকেডিং সেট রয়েছে যাতে এটি আমাকে তাদের কোনওরকম পরিবর্তন করতে দেয়))

if $MYVIMRC != ''
    autocmd BufWritePost    *vimrc      source $MYVIMRC
endif

2

আমার অন্যান্য উত্তরের চেয়ে প্রশ্নের সরাসরি প্রশ্নে আপনি এটি পছন্দ করতে একটি ম্যাপিং সংজ্ঞায়িত করতে পারেন ( nnoremapকোনও নির্বাচনের জন্য, কেবলমাত্র বর্তমান লাইনটি কার্যকর করুন; vnoremapযখন ভিজ্যুয়াল মোড সক্রিয় থাকে):

nnoremap <F2> :execute getline(".")<CR>
vnoremap <F2> :<C-u>for line in getline("'<", "'>") \| execute line \| endfor<CR>

উভয় ক্ষেত্রেই "বর্তমান লাইন" :executeডি, সুতরাং ভিজ্যুয়াল সংস্করণে আপনি :executeভিজ্যুয়াল নির্বাচনের মাধ্যমে একের পর এক লাইন আঁকছেন।

অন্য উত্তরে যেমন বলা হয়েছে, টাইপ করার <C-u>সময় কমান্ড লাইনে পপ আপ হওয়া পরিসীমা নির্দিষ্টকরণ :মুছবে। |অক্ষর কারণ অন্যথায় তারা শেষে হিসেবে ব্যাখ্যা করছেন পলান করা প্রয়োজন vnoremapকমান্ড।

কিছু পালানোর জিমন্যাস্টিক থেকে মুক্তি পাওয়ার জন্য এটি একটি ফাংশনে রূপান্তরিতও হতে পারে তবে এই মুহুর্তে আমার কাছে এটি বিশাল জয় বলে মনে হচ্ছে না। এটি মূলত vnoremap একাধিক লাইনে প্রসারিত হবে এবং callএকটি পরিসীমা সহ এড হবে বা [এনভি] ম্যাপিং মোডের উপর নির্ভর করে না।


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