আমি কীভাবে vi তে দুটি লাইনে যোগদান করব?


169

নীচের মতো একটি পাঠ্য ফাইলে আমার দুটি লাইন রয়েছে:

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT

আমি নীচের মত vi তে দুটি লাইন যুক্ত করতে চাই:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT

দ্বিতীয় লাইনটি মুছে ফেলা হয়েছে এবং দ্বিতীয় লাইনের সামগ্রীগুলি প্রথম লাইনে যুক্ত করা হয়েছে।

আমি vi তে কমান্ড মোড ব্যবহার করে এটি কীভাবে করতে পারি?

উত্তর:


310

Shift+ Jবর্তমান রেখা থেকে রেখা পরিবর্তন চরিত্রটি সরিয়ে দেয়, সুতরাং লাইনের যে কোনও স্থানে "জে" টিপে আপনি বর্তমান লাইনটি এবং পরবর্তী লাইনের সাথে আপনি যেভাবে চান তা একত্রিত করতে পারেন।


9
উপরের কেস লাইনগুলিতে যোগদান করে, লোয়ার

4
এটি একটি মূলধন জে, ছোট-বড় জে নয়; অতএব শিফট-জে।
জোনাথন লেফলার

28
"বর্তমান লাইন থেকে রেখা পরিবর্তন চরিত্রটি সরিয়ে দেয়" জে কী করে তা বর্ণনা করার জন্য একটি দুর্দান্ত বিশ্রী উপায় এবং এটি সত্যই সঠিকও নয়। জে এই "পরবর্তী" সাথে এই লাইন যোগ দেয়। প্রক্রিয়াটিতে এটি নিউলাইনটিকে সরিয়ে দেয়, তবে অন্যান্য উপায়ে হোয়াইটস্পেসেও হেরফের করে।
লরেন্স গনসাল্ভেস

5
হা হা। GJমধ্যে vimশেষ লাইনটি সরে যাবে এবং তারপর পরবর্তী লাইনে অন্যান্যদের এতে যোগ দিতে চেষ্টা করুন, শুধুমাত্র কমান্ড যোগদানের অর্থে দেখা যায় না লিখুন। হ্যাঁ, আমি এই
মজাদারটি

2
আমি এখনও বুঝতে পারি না যে এই সম্পাদকটি ব্যবহার করে দুটি লাইনে যোগ দিতে আমাকে স্ট্যাকওভারফ্লোতে যেতে হবে!
মণিত্রা অ্যান্ড্রিয়ামিটন্ড্রা

59

ভি বা ভিম?

যাইহোক, নীচের কমান্ডটি 'নোকম্পোটিবল' মোডে ভিমের জন্য কাজ করে। অর্থাৎ, আমি মনে করি, প্রায় খাঁটি vi।

:join!

আপনি যদি এটি করতে চান তবে সাধারণ কমান্ড ব্যবহার করুন

gJ

'জিজে' দিয়ে আপনি হোয়াইটস্পেসগুলি যোগ বা সরিয়ে না রেখে যেমনটি লাইনে যুক্ত হন:

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT

ফলাফল:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT

'জে' কমান্ডের সাথে আপনার কাছে থাকবে:

S<Switch_ID>_F<File type> _ID<ID number>_T<date+time>_O<Original File name>.DAT

type>এবং মধ্যে নোট স্পেস _ID


2
কেবল এটি উল্লেখ করতে চাই যে g/pattern/joinভিআইএম-এ কাজ g/pattern/Jকরে যখন না হয়। ভবিষ্যতের কিছু লোককে সাহায্য করতে পারে।
জিসাকস্টোন

আমি আপনার প্যাটার্নের সাথে যোগ দিতে পছন্দ করি তবে এটি সাদা স্থানের সাথে দুটি লাইনে যোগ দেয়। যাইহোক সাদা স্থান ছাড়া একটি প্যাটার্ন সঙ্গে দুটি লাইন যোগদান?
ডেভিড.চু.সি.এ

গ্রাম / প্যাটার্ন / যোগদান! মনে হয় এটা করতে।
25:58

1
এটা কি আরও জটিল হতে পারে, দয়া করে! :-)
জোহানেস ওভারম্যান

22

এটি করা উচিত:

J


6
'জে' লাইনে যোগ দেওয়ার সময় অতিরিক্ত স্থান দেয়।
ম্যাক্সিম কিম

3
@ ম্যাক্সিম কিম: এবং এ কারণেই । নোট যা :h Jআপনাকে সেই বৈশিষ্ট্যটি কীভাবে অক্ষম করতে হবে তা বলবে।
ereOn

2
gJলাইনগুলিতে যোগদানের সময় আপনি কোনও স্থান যোগ করতে ভিএম না চাইলে ব্যবহার করুন
qwertzguy

17

Vi এ, J(এটি Shift+ J) বা :joinবেশিরভাগ অংশের জন্য আপনার যা করা উচিত তা করা উচিত। মনে রাখবেন যে তারা হোয়াইটস্পেস সামঞ্জস্য করে। বিশেষত, আপনি অনেক ক্ষেত্রে দুটি যুক্ত লাইনের মধ্যে একটি স্থান দিয়ে শেষ করতে পারেন এবং দ্বিতীয় লাইনটি যদি যুক্ত হয় যে যোগদানের পূর্বে ইনডেন্টেশনটি সরানো হবে।

ভিম এ আপনি gJ( G, তারপরে Shift+ J) বা ব্যবহার করতে পারেন :join!। এগুলি কোনও সাদা স্থান সমন্বয় না করে লাইনে যোগ দেবে join

ভিমে, :help Jআরও তথ্যের জন্য দেখুন।


ব্যবহার করার সময় একটি সতর্কতা gJএবং Jতা হ'ল উভয়ই যোগদানকারী বিন্দুতে কার্সারটি চ্যাং করে, :join!এবং এবং :joinনা।
সেরজিওআরাউজো

4

কেবল " \n" সাথে "" প্রতিস্থাপন করুন ।

নথিতে প্রতিটি লাইনের জন্য vi / Vim এ:

%s/>\n_/>_/g

আপনি যদি প্রতিস্থাপনের বিষয়টি নিশ্চিত করতে চান:

%s/>\n_/>_/gc

3

আপনি যদি নির্বাচিত লাইনগুলিতে যোগদান করতে চান (আপনি ভিজ্যুয়াল মোডে রয়েছেন), তবে gJকোনও ফাঁকা স্থান ছাড়াই আপনার লাইনে যোগ দিতে কেবল টিপুন ।

এটি vi / Vim স্ট্যাক এক্সচেঞ্জ সাইটে বৃহত্তর বিশদে বর্ণনা করা হয়েছে ।


1

প্রথম লাইনে Shift+ 4("$") টিপুন , তারপরে Shift+ j("জে") চাপুন ।

এবং আপনি যদি সহায়তা চান তবে vi তে যান এবং তারপরে টিপুন F1


3
the সারির শেষ প্রান্তে চলে যায় তবে জে

1
জে লাইনে যোগদানের জন্য আপনাকে লাইনের শেষে থাকতে হবে না।
জোনাথন লেফলার

1
আসলে $ টিপতে প্রয়োজনীয় নয়।
লরেন্স গনসাল্ভেস

1
@laurence .pressing $ নিশ্চিত করে যে কার্সারটিকে নতুন লাইন চার্টারের ঠিক পাশে রাখা হয়েছে এবং এটি আবশ্যক।
বিজয়

1

ভিমে আপনিও ব্যবহার করতে পারেন gJ


1

সেই লাইনে কার্সার না রেখে দুটি লাইনে যোগদানের আরেকটি উপায়:

:6,6s#\n##

এখানে 6 হ'ল লাইন নম্বর যেখানে অন্য লাইন যুক্ত হবে। লাইন নম্বর প্রদর্শন করতে, ব্যবহার করুন :set nu

যদি আমরা কার্সারে থাকি যেখানে পরবর্তী লাইনে যোগদান করা উচিত তবে:

:s#\n##

উভয় ক্ষেত্রেই আমরা প্রয়োজন হবে না gপছন্দ :s#\n##g, কারণ এক লাইন শুধুমাত্র এক \nবিদ্যমান।


Shift+Vযোগদানের জন্য সমস্ত লাইন নির্বাচন করা ব্যবহার করা সহজ , শেষ ব্যতীত এবং তারপরে :'<,'>s/\n/, /এই উদাহরণে প্রতিটিটির শেষে কমা এবং একটি স্থান রেখে লাইনগুলিতে যোগদান করা উচিত। মনে রাখবেন যে যখন :কোনও কিছু নির্বাচন করা হয় এবং আমরা সাধারণ মোডে টাইপ করি , তখন '<,'>স্বয়ংক্রিয়ভাবে কমান্ড লাইনে উপস্থিত হয়।
এভেজেনি সার্জিভ

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