লাইন বিম yanking পরিসীমা


84

আমি একজন সি # বিকাশকারী যিনি সম্প্রতি আমার কাছে উপলব্ধ সরঞ্জামগুলির সম্পর্কে আমার জ্ঞানকে প্রসারিত করার সিদ্ধান্ত নিয়েছে। আমি প্রথম সরঞ্জামটি শিখার সিদ্ধান্ত নিয়েছি তা হ'ল ভি / ভিম। এখনও পর্যন্ত সবকিছু ঠিকঠাক চলছে, তবে বেশ কয়েকটি প্রশ্নের উত্তর আমার কাছে পাওয়া যায় না বলে মনে হচ্ছে:

  1. বলি যে আমি অনেকগুলি লাইনে ইয়েঙ্ক করতে চেয়েছিলাম। আমি জানি যে এটি করার অনেকগুলি উপায় রয়েছে তবে আমি এটি লাইন নম্বর দ্বারা করতে চাই। আমি অনুভব করেছি এটি কীভাবে বিকল্প কমান্ডগুলি কাজ করে, এর মতো হবে 81,91y। এই কাজ করতে একটি উপায় আছে কি?

  2. আমি gসাধারণ মোডে কমান্ডটি সম্পর্কে কিছুটা বিভ্রান্ত হয়ে পড়েছি । এটি একটি অগণিত কাজ বলে মনে হচ্ছে এবং জি কমান্ডটি এর মূল অংশে কী করে তা আমি সত্যিই নির্ধারণ করতে পারি না। এটি একটি মোশন কমান্ড বা অন্য কমান্ডগুলির জন্য এক ধরণের "ক্যাচল অল" সাধারণ নীতি অনুসারে চলে কিনা তা নিয়ে আমি বিভ্রান্ত। কেউ দয়া করে এটি ব্যাখ্যা করতে পারেন বা আমাকে এমন একটি উল্লেখের দিকে gনির্দেশ করতে পারেন যা কমান্ডটির একটি ভাল ব্যাখ্যা দেয় ?


4
"ভিমে" (1) কমান্ডটি সম্পর্কে আপনি কি জানেন?
স্টিভ এমারসন

হ্যাঁ, তবে আমি এটি সমস্ত তথ্যসূত্রগুলিতে খুঁজে পাইনি। দেখা যাচ্ছে যে আমি ভাবছিলাম যে আমি এটি স্বাভাবিক মোড থেকে করব, তবে হোমটিস্ট দেখিয়েছে কীভাবে এটি কমান্ড মোড থেকে করতে হবে। G কমান্ডের জন্য, আমি কেবল দেখতে পেলাম যে সাহায্যটি সমস্ত কমান্ডকে এক সাথে বাঁধে না কারণ আমি অন্যান্য কমান্ডের কাছ থেকে আশা করব।
jnadro52

4
একদিকে যেমন, আমি আপনাকে প্রতিটি প্রশ্নে একটি পোস্ট করতে চাই।
ডানা

4
ভবিষ্যতে আমি তা করবো। প্রথম প্রশ্নটি নিয়ে আমি আরও উদ্বিগ্ন ছিলাম, প্রথম টাইপ করার সময় আমি কেবল অন্যটি সম্পর্কেই ভেবেছিলাম।
jnadro52

উত্তর:


141

ইয়াঙ্ক লাইনগুলি 81-91

:81,91y<enter>

যদি আপনার আঙ্গুলগুলি কীগুলি :এবং ,কীগুলি সন্ধান করতে পছন্দ না করে তবে এটি কাজ করবে (81 লাইনে যান, 11 লাইনে যান)

81gg11yy 

আমার একমাত্র ব্যবহার gহয় 5gg। 5 তম লাইনে যেতে। 22gg: 22 তম লাইন। জিম্বো যেমন বলেছিল, এটি অন্য কয়েকটি কমান্ডের জন্য কেবলমাত্র একটি পরিবর্তনকারী।

সম্পূর্ণতার জন্য, ( http://vim.wikia.com/wiki/Power_of_g ) gকমান্ড মোডে কীভাবে কাজ করে তা অনেক কিছু ব্যাখ্যা করে।


4
বড় হাতের অক্ষর ব্যবহার করাও বিভিন্নতা সরবরাহ করে: ggপ্রথম লাইনে যাবে, Gশেষের দিকে যাবে। এছাড়াও, 5Gলাইন 5 এ যায় চিহ্নগুলি লাইন সংখ্যাগুলির পরিবর্তে (ম্যাক্রোর পক্ষে ভাল) ব্যবহার করা যেতে পারে, যেমন: :'a,52y
এনভিআরএএম

4
আপনি যদি শিফট কী থেকে ভয় পান না, 81G11Yএমনকি "খাটো" হ'ল।
জেনস

4
সাধারণ মোড পদ্ধতির খারাপ দিকটি হ'ল আপনি নিজের "স্থান" হারাচ্ছেন; আপনি mxআগে এবং 'xপরে অনুভূত হতে পারেন তবে কমান্ড মোড সংস্করণটি অনেক বেশি সংহত হয়ে যায়। হুম ... খুব শীঘ্রই আমি এটি লিখেছিলাম না যে আমি @ আস্তার কাছ থেকে উত্তরটি দেখেছি।
এরিক স্মিথ

4
@ উইলিয়ামআরস এটি আপনার সিস্টেমে ক্লিপবোর্ডে সিএমটিআরএল + ভি দিয়ে নোটপ্যাডে পেস্ট করতে পারতেন না এমনভাবে ভিআইএম-তে ব্যবহারের জন্য লাইনগুলি একটি বাফারে রাখে। সম্পর্কিত প্রশ্নটি দেখুন: vi থেকে বিভিন্ন অ্যাপ্লিকেশনে কীভাবে টেক্সট অনুলিপি / আটকানো যায়
হোমটোস্ট

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

23

আপনি 'টি' ব্যবহার করে আপনার বর্তমান কার্সার অবস্থানে বর্তমান লাইনগুলি অনুলিপি করতে পারেন।

:81,91t.<enter>

এটি কার্সার চালু আছে লাইনের নিচে 81-91 রেখাগুলি আটকান।

আমি এটি http://vimcast.org থেকে শিখেছি যা ভিআইএম-এ একটি দুর্দান্ত উত্স।


t.এখানে মানে কি ?
সিভিফ্যান 25'18

4
আমার বোঝাপড়া থেকে অসুস্থ বা ও tহিসাবে বিবেচনা করা যেতে পারে এবং এটি বর্তমান লাইনের ঠিকানা। tt.
আস্তা

4
@ সিভিফ্যান এটির একটি প্রতিশব্দ:copy
ডি বেন নোবল

11

আমি ভিআইএম এর আপেক্ষিক লাইন নম্বর বিকল্পটিও ব্যবহার করতে চাই যার অর্থ আমি কেবল প্রবেশ করতে পারি:

:-10,-7ya a

নামটি বাফারে পাঠ্যটি ইয়াঙ্ক করতে a।

এনবি নির্দিষ্টকরণের একটি আপনি বাফার বর্তমান বিষয়বস্তুগুলিতে যা যা করছেন তা যুক্ত করবে।

ভুলে যাবেন না যে আপনি পাঠ্যের ব্লকগুলিও অনুলিপি করতে পারেন এবং একই ধরণের কমান্ডগুলির সাহায্যে পাঠ্যের ব্লকগুলিকে চারদিকে স্থানান্তর করতে পারেন:

:-10,-7co .

মানে টেক্সটের চারটি রেখা 10 লাইনের উপরে বর্তমান লাইনের নীচে এবং অনুলিপি করুন

:-10,-7mo .

মানে পাঠ্যটির চারটি রেখা 10 লাইনের উপরে বর্তমান লাইনের নীচে সরানো।


8

Gযদি এটি একটি গণনা মান দ্বারা অনুষঙ্গী কম্যান্ড, একটি নির্দিষ্ট লাইন সংখ্যা চলে যায়। 81Gআপনাকে 81 লাইনে রাখে।

yকমান্ড মত একটি আন্দোলনের সঙ্গে মিলিত হতে পারে G। সুতরাং 91 লাইন পর্যন্ত সমস্ত কিছু ইঙ্ক করতে আপনি ব্যবহার করতে পারেন y91G

একসাথে আপনি পাবেন:

81Gy91G

Line১ লাইনে যান, তারপরে 91 লাইনে যাওয়ার সময় ইয়াঙ্ক করুন।


4
আমি ইচ্ছুক আমি এই একাধিকবার upvote করতে পারে। আমাকে যা কিছু সাহায্য করেছিল তা হ'ল এটি একটি রেজিস্টারকে ইয়ঙ্ক করতে ব্যবহার করা (আমার ক্ষেত্রে, রেজিস্টার + অর্থাত্, ক্লিপবোর্ডে):81G"+y91G
মিগেরে

4
@ এমগেরিতে লাইন রেঞ্জের সিনট্যাক্স ব্যবহার করে সরাসরি কোনও রেজিস্টারটিতে ইয়েঙ্ক করার কোনও উপায় নেই? 81,91yএবং কোনওভাবে নিবন্ধকে টার্গেট করবেন?
ডিপ্লোসরাস

4
@ ডিপ্লোসৌরাস সম্ভবত, তবে আমি জানি না। এটি viistackexchange.com- এ যদি জিজ্ঞাসা করতে পারে এমন একটি প্রশ্নের মতো মনে হয়, যদি এটি ইতিমধ্যে বা এখানে নেই তবে। আমি আগ্রহী হই আমি কোন ভিম বিশেষজ্ঞ নই।
মিগেরে

4
@ এমগেরি গুগল অনুসন্ধানের সাথে সৃজনশীল হতে হয়েছিল তবে আমি এটি এখানে পেয়েছি: stackoverflow.com/questions/16225366/…:81,91y +
ডিপ্লোসরাস

@ ডিপ্লোসরাস :81,91y +কাজ করে না। এটি :81,91y aউদাহরণস্বরূপ অন্যান্য রেজিস্টারে কাজ করে তবে রেজিস্টারটি পছন্দ করে না বলে মনে হয় +। এটি অন্যান্য লোকদের জন্য অবশ্যই কাজ করে?
ওজুন্ক

4

gনিজে থেকে কিছু করে না এটি এমন একটি দম্পতি মেটা-কমান্ডগুলির মধ্যে একটি যা বিভিন্ন গোছা-সম্পর্কযুক্ত কমান্ড ধারণ করে।

z এটি এখনও অন্য কমান্ড।


ধন্যবাদ. আমি এখন বুঝতে পারি যে এটি কেবল বিভিন্ন উদ্দেশ্যে ব্যবহৃত হয়েছে। আমি যখন এই সরঞ্জামগুলি শেখার চেষ্টা করি, তখন আমি কমান্ডগুলি এমন কিছু সাথে যুক্ত করার চেষ্টা করি যা আমি বিমূর্ত করতে পারি যাতে এটি কীভাবে সঠিকভাবে ব্যবহার করতে হয় তা আমার মনে আছে। দেখে মনে হচ্ছে জি কমান্ড হ'ল সেই জিনিসগুলির মধ্যে একটি যা সঠিকভাবে ব্যবহার করার জন্য আপনাকে মুখস্ত করতে হবে।
jnadro52

2

ভিম এর :help indexবর্ণনা দেয় g:

|g|             g{char}            extended commands, see |g| below

:help gএকটি তালিকার জন্য নীচে (বা ) স্ক্রোল করুন ।


4
আমি: হেল্পের সাথে পরিচিত ছিলাম কিন্তু আমি পরিচিত ছিলাম না: সাহায্য (কমান্ড)। ভবিষ্যতে এটি খুব কার্যকর হবে। আপনাকে ধন্যবাদ, স্যার।
jnadro52

2

সবচেয়ে ভাল সমাধানটি হ'ল "ভিজ্যুয়াল মোড" এ প্রবেশ করানো হবে, ভি চেপে And এবং লাইনগুলি নির্বাচন করার পরে কেবল y টিপে কপি করুন। তারপরে পি টিপে কপি করা লাইনগুলি পেস্ট করুন।


অসম্মতি, তবে কেবলমাত্র বিসি ভিজ্যুয়াল মোড মাঝে মাঝে খুব ধীর হয়।
ডি বেন নোবল

1

উপরন্তু করতে :91,96y aযা হ্যাচকা টান লাগে ( y) রেজিস্টার মধ্যে 96 মাধ্যমে লাইন 91 a, (সঙ্গে আটকানো "ap), yanked লাইন যাবে যোগ দিয়ে রেজিস্টার করুন:

:91,96y A

অর্থাৎ Aনিবন্ধের মূলধনটি aওভাররাইটের পরিবর্তে একটি সংযোজন অপারেশনকে রেজিস্টারে পরিণত করে । নিবন্ধকের মূলধন সর্বদা :let @A=';'এটির মতো কাজ করে, যেমন একটি ;রেজিস্টার করতে সংযোজন করে a

বর্তমান কার্সার অবস্থানের সাথে সম্পর্কিত (+) বা বিয়োগ (-) রেফারেন্স লাইন ব্যবহার করে:

:-10,+10y b

অর্থাৎ এটি yবর্তমান কার্সার অবস্থানের চারপাশে 21 টি লাইন ইঙ্ক করে এবং সেগুলিতে নিবন্ধভুক্ত করবে b

ইনপুট অনুপস্থিতি প্রকৃতপক্ষে বর্তমান কার্সার অবস্থানেরও প্রতিনিধিত্ব করে, যার অর্থ এটি:

:-5,y a

উপরের পাঠ্যটি 5 টি লাইন থেকে বর্তমান কার্সার অবস্থানে নামকরণকারী বাফারে পরিণত হবে aএবং:

:,+5y a

বাফারে বর্তমান কার্সারের অবস্থানের পরে 5 টি লাইন ইঙ্ক করা হবে a

দ্রষ্টব্য: আপনার যদি বাফারে ম্যাক্রো থাকে a এটি পূর্ববর্তী ইয়াঙ্ক দ্বারা ঠিক ওভাররাইট করা হয়েছিল, কারণ ইয়াঙ্ক রেজিস্টার এবং ম্যাক্রো রেজিস্টারগুলি একই জিনিস। যে কারণে, কাকতালীয়ভাবে, আপনি একটি ম্যাক্রো পেস্ট করতে পারেন, এটি সম্পাদনা করতে পারেন এবং তারপরে এটি রেজিস্টারে ফিরে ইঙ্ক করতে পারেন। আমি ব্যক্তিগতভাবে ইয়ঙ্কদের জন্য আমার বাম হাতের কাছে পৌঁছে যাওয়া চিঠিগুলি এবং ম্যাক্রোগুলির জন্য আমার ডান হাতের কাছে পৌঁছানো চিঠিগুলি ব্যবহার করি।

চারপাশে পাঠ্যের ব্লকগুলি সরিয়ে নেওয়া, দেখতে এটির মতো দেখাচ্ছে:

:+10,+13m.

যার অর্থ বর্তমান কার্সারের 10 লাইন আগে অবস্থিত চারটি রেখা বর্তমান লাইনের নীচে সরিয়ে নিন।

সংযোজন

আমি আগে বিভ্রান্ত yaহয়ে পড়েছিলাম :91,95ya aযে কোনওভাবে ya{motion}এই গতিটি সরবরাহ করেছিল তার সমার্থক 91,95। এটি ভুল ছিল এবং "এ" yaসম্পূর্ণ অপ্রয়োজনীয়। আমার প্রতিরক্ষার সাথে, আমি help yankএটি প্রকাশ করি না যে এটির yaএকটি সম্ভাব্য নাম yank


4
:yaএর সংক্ষিপ্তসার :yank, সুতরাং আমি সমস্ত লাইন ইয়াঙ্কস সম্পর্কে কেমন অনুভব করছি তা নিশ্চিত নই । তবে ভাল কাজ কিছু ছড়িয়ে ছিটিয়ে থাকা তথ্যকে ঘনীভূত করে
ডি বেন নোবল

আমিও তাই ভেবেছি, যতক্ষণ না তাকিয়ে আছি :help yank। কোন ওরফে হয় yaজন্য yank। যদিও আপনি ঠিক aবলেছেন, "সকলের" পক্ষে দাঁড়ায় না, এটি প্রযুক্তিগতভাবে "এ" হিসাবে দাঁড়িয়েছে। আমি যদিও এখনও "সকল" বলতে পছন্দ করি, কারণ এটি আমার কাছে আরও বেশি অর্থবোধ করে।
পল পার্কার

4
:[range]y[ank] [x] Yank [range] lines [into register x]বর্গাকার বন্ধনীগুলি y[ank]ইঙ্গিত দেয় যে the [ank]চ্ছিক। :y,, :yaএবং :yanএর জন্য :yank
স্পষ্টতই

আমি সংশোধন করলাম :) একটি প্রয়োজনীয় নয়। প্রতিফলিত উত্তর সম্পাদনা করবে।
পল পার্কার

4
আপনার সংযোজনটি দুর্দান্ত, তবে আমি আপনার প্রথম লাইনটি উল্লেখ করছিলাম, যেখানে আপনি প্রাক্তন কমান্ড ব্যবহার করেন :yaএবং সাধারণ কমান্ডটি নাy
ডি বেন নোবল

0

দীর্ঘ সময় ভাই / ভিএম ব্যবহারকারী হিসাবে আমি লাইন নম্বরগুলির পরিবর্তে (বা 'লাইন চিহ্নিতকারী') ব্যবহার করে 'চিহ্ন' ব্যবহার করি । এটি এর মতো কাজ করে: mএটিই 'চিহ্ন' চরিত্র; তারপরে চিহ্ন চিহ্নিত / নামকরণের জন্য যে কোনও বর্ণ ব্যবহার করুন। একটি চিহ্নের উপস্থানে ফিরে আসার জন্য একক উদ্ধৃতি ( 'a) দিয়ে এই চিহ্নটি চিহ্নিত চিহ্নটি ব্যাপ্তি হিসাবে ব্যবহার করা যেতে পারে। উদাহরণ:

File:
    <line 1>
    <line 2>
    <line 3>
    <line 4>
    <line 5>

কমান্ড মোডে যখন কার্সারটি লাইন 2 তে সরান, টাইপ করুন ma। লাইন 4 এ স্ক্রোল করুন, টাইপ করুন mb। চিহ্ন থেকে Yank করার একটি চিহ্ন টাইপ:

    :'a,'byank

চিহ্ন থেকে মুছে ফেলার জন্য একটি চিহ্ন টাইপ:

    :'a,'bdel

চিহ্ন থেকে অনুসন্ধান পর্যন্ত একটি চিহ্ন এবং 'কালি' '-এর সাথে Ine' প্রতিস্থাপন করুন:

    :'a,'bs/ine/ink/g

চিহ্ন অনুলিপি করতে একটি চিহ্ন মাধ্যমে পেস্ট বর্তমান অবস্থান নিচে ( 'ডট' সবসময় লাইন যেখানে কার্সার বর্তমানে অবস্থিত রেফারেন্স):

    :'a,'bco . 

কোড লাইনের Shift, মার্ক মধ্যে একটি চিহ্ন মাধ্যমে ডানদিকে, একটি ট্যাব (ব্যবহারের শেভ্রন বিপরীত <, বাম সরাতে):

    :'a,'b> 

কমান্ড মোডে আপনি 'aচিহ্নিত লাইনে ফিরে যেতে কেবল টাইপ করে চিহ্নগুলিতে ফিরে যেতে পারেন a। টাইপিং'' আপনাকে পূর্ববর্তী অবস্থানে ফিরিয়ে নিয়ে যায় (দুর্ভাগ্যক্রমে কেবল আগের অবস্থান দুটিই নয়, কেবল মনে থাকে)।

আপনি নামযুক্ত বাফারগুলিতে ঝাঁকুনি দিতে পারেন, লাইন নম্বরগুলি না জেনে আপনার নামগুলির কিছু অংশ ইত্যাদি অনুলিপি করতে, অনুলিপি করতে, লাইনগুলি মুছতে, সন্ধান এবং প্রতিস্থাপন করতে পারেন।


0

৮১ থেকে ৯১ রেখার লাইনগুলি ইঙ্ক করতে:

পন্থা 1: 81gg11yy

খারাপ না তবে কত লাইন ইয়েঙ্ক করা হবে তা জানতে আপনাকে গণিতের কিছুটা করতে হবে

: কাছে 2 81ggতারপর shift+vতারপর 91ggতারপরy

আমার মতামত সেরা কারণ এটি সরাসরি এগিয়ে, আপনি কেবল স্পষ্টতই জানতে হবে যেমন কোন লাইন নম্বর থেকে আপনি কোন লাইন নম্বরটিতে ইয়াঙ্ক করতে চান

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