ভিমে নতুন লাইন মুছুন


271

ভিমের লাইনের শেষে নতুন লাইনটি মুছার উপায় আছে, যাতে পরবর্তী লাইনটি বর্তমান লাইনে যুক্ত হয়?

উদাহরণ স্বরূপ:

Evaluator<T>():
    _bestPos(){
}

আমি লাইনগুলি অনুলিপি না করে এবং পূর্ববর্তী একটিতে আটকানো ছাড়াই এই সমস্তটি এক লাইনে রাখতে চাই। দেখে মনে হচ্ছে যে আমার প্রতিটি কার্সারটি প্রতিটি লাইনের শেষের দিকে রাখতে সক্ষম হবে, একটি কী টিপুন এবং কার্সারটি চালু আছে একই পাতায় পরের লাইনটি ঝাঁপিয়ে দেওয়া উচিত।

শেষ ফলাফল:

Evaluator<T>(): _bestPos(){ }

ভিম এ কি সম্ভব?


ভিমের সন্নিবেশ মোডে লাইনের শেষে ডেল আমার জন্য কাজ করত। যদিও প্রতিটি টার্মিনালে নেই।
ভিক্টর সার্জিইঙ্কো

উত্তর:


584

আপনি যদি প্রথম লাইনে থাকেন তবে টিপুন (বড় হাতের অক্ষর) Jসেই লাইনটি এবং পরবর্তী লাইনে একসাথে যোগদান করবে, নতুন লাইনটি সরিয়ে ফেলবে। আপনি এটি একটি গণনার সাথেও একত্র করতে পারেন, তাই 3Jটিপলে সমস্ত 3 টি লাইন একত্রিত হবে।


29
অন্য উত্তরে উল্লিখিত হিসাবে, gJব্যবহারের সময় ভিম যোগ করতে পারে এমন স্থানগুলি যুক্ত করা এড়াতে পারবেন না J
মাইকেল মায়ার

5
আপনি যদি এই লাইন নির্বাচন করতে পারেন আপনি ব্যবহার যোগ দিতে চান V(ভিসুয়াল লাইন মোড) তারপর প্রেস JবাgJ
Sbu

আপনি কার্সার অবস্থানে ব্যবহার রাখতে চান :joinএবং :join!যে কার্সার অবস্থানে রেখে লাইন যোগ দেবেন এবং যোগদান সময়ে কোনো স্থান রাখা হবে না। আপনি এটির মতো ম্যাপও করতে পারেন: nnoremap <Leader>j :joing<cr>এবং nnoremap <Leader>gj :join!<cr>
সেরজিওআরাউজো

82

অবশ্যই. ভিম line n অক্ষরটিকে একটি নতুন লাইন হিসাবে স্বীকৃতি দেয়, তাই আপনি কেবল অনুসন্ধান এবং প্রতিস্থাপন করতে পারেন। কমান্ড মোডে টাইপ করুন:

:%s/\n/

1
ধন্যবাদ, তবে আমি বিশ্বব্যাপী অনুসন্ধান এবং প্রতিস্থাপন চাই না।
derekerdmann

16
% অপসারণ এটি যত্ন নেয়। তারপরে এটি কেবল কার্সার চালু রেখায় ঘটবে। বিকল্পভাবে, আপনি একটি ব্যাপ্তি নির্দিষ্ট করতে পারেন যেমন: 11,15s / \ n / (লাইন 11-15) বা:, + 7s / \ n / (এই রেখাটি এবং পরবর্তী সাতটি) বা: -3, এস / \ n / (পূর্ববর্তী তিনটি লাইন এবং এটি একটি) ... আপনি ধারণাটি পাবেন
ত্রিস্তান

1
অথবা আপনি একটি Vআইসুয়াল ব্লক নির্বাচন করতে পারেন এবং এটির উপরে প্রতিস্থাপন করতে পারেন।
ভিক্টর সার্জিইঙ্কো

51

স্বাভাবিক মোডে উপরের লাইনে থাকা অবস্থায়, Shift+ চাপুন j

আপনি একটি গণনাও প্রেন্ডেন্ড করতে পারেন, তাই 3Jউপরের লাইনে সমস্ত লাইন একসাথে যোগদান করবে।


34

উল্লিখিত অন্যান্য উত্তর হিসাবে, (বড় হাতের অক্ষর ) Jএবং অনুসন্ধান + প্রতিস্থাপন \nসাধারণত নিউলাইন চরিত্রগুলি ছাঁটাই করতে এবং লাইনগুলিকে একত্রিত করতে ব্যবহার করা যেতে পারে।

তবে শেষ লাইনে থাকা নতুন লাইনের চরিত্রটি পরিত্রাণ পেতে আপনার ভিমে এটি করা দরকার:

:set noendofline binary
:w

1
প্রশ্নটি একটি ফাইলের মাঝখানে দুটি লাইন একত্রিত করার বিষয়ে - এই উত্তরটি ফাইলের শেষে নতুন লাইনটি সরিয়ে দেয়, যা আমি জিজ্ঞাসা করেছি তা নয়।
derekerdmann

3
এটি আমার পক্ষে কাজ করেছে। আমি ভিআইএম সহ একটি একক লাইন ফাইলের শেষে একটি নতুন লাইন থেকে মুক্তি পাওয়ার চেষ্টা করছিলাম।
লোকানে

কেন :set noendoflineকাজ করে না binary?
দ্বার

32

Jঅতিরিক্ত স্থানের শূন্যস্থান মুছে ফেলা (যদি থাকে), একক স্থানের সাথে লাইনে যোগ দেওয়া joining (কিছু ব্যতিক্রম সহ: পরে /[.!?]$/, দুটি স্পেস সন্নিবেশ করা যেতে পারে; আগে /^\s*)/, কোনও স্পেস sertedোকানো হয় না))

আপনি যদি এই আচরণটি না চান, gJকেবল নিউলাইনটি সরিয়ে ফেলুন এবং স্পেসগুলি দিয়ে মোটেও চালাক কিছু করবেন না।


10

নিম্নলিখিত সমস্ত অনুমান করে যে আপনার কার্সারটি প্রথম লাইনে রয়েছে:

সাধারণ ম্যাপিংস ব্যবহার:

3Shift+ +J

প্রাক্তন আদেশগুলি ব্যবহার করে:

:,+2j

যা একটি সংক্ষেপণ

:.,.+2 join

যা নিম্নলিখিত শর্টকাট দ্বারা প্রবেশ করা যেতে পারে:

3:j

একটি আরও ছোট প্রাক্তন কমান্ড:

:j3

2
তাদের মধ্যে কোনও ফাঁক ছাড়াই:j!3
সেরজিওআরাউজো

10
set backspace=indent,eol,start

আপনার .vimrc মধ্যে আপনি ব্যবহার করতে অনুমতি দেবে backspaceএবং deleteউপর \nসন্নিবেশ মোডে (সম্পর্কে newline)।

set whichwrap+=<,>,h,l,[,]

আপনাকে পূর্ববর্তী এলএফটিকে স্বাভাবিক মোডে মুছতে অনুমতি দেবে X(যখন কর্নাল 1 এ)।


2

এটি সম্ভবত আপনার সেটিংসের উপর নির্ভর করে তবে আমি সাধারণত এটি দিয়ে করি A<delete>

Aলাইনের শেষে সংযোজন কোথায় । এটি সম্ভবত nocompatibleমোড প্রয়োজন :)


3
"আমি সাধারণত এ <ডিলিট> দিয়ে এটি করি" হ্যাঁ তাই আমি এখানে এসেছি; একটি ভাল উপায় খুঁজে;)। ভিমের পুরো পয়েন্টটি আপনার বাড়ির সারি থেকে সরে যাচ্ছে না।
লু

2
<CURSOR>Evaluator<T>():
    _bestPos(){
}

প্রথম লাইনে কার্সার

এখনই, সাধারণ মোডে করুন

shift+v
2j
shift+j

অথবা

V2jJ

: সাধারণ ভি 2 জে


1

আপনি যে লাইনে আপনি নিউলাইনটি সরাতে চান তার জন্য আমি কেবল একটি লাইনের শেষ অংশে সংযোজন মোডে আপনাকে প্রবেশ করিয়ে দিচ্ছি এবং মুছুন টিপুন।


দুঃখের বিষয়, এটি আমার পক্ষে কাজ করে না বলে মনে হয়; এটি একটি পটিটি সেটিংস হতে পারে যা আমি মিস করেছি।
derekerdmann

2
সম্ভবত vi ব্যাকস্পেস বিকল্প::help 'backspace'
গ্লেন জ্যাকম্যান

1

আপনি যদি অন্যান্য শেল সরঞ্জাম ব্যবহার করে কিছু মনে করেন না,

tr -d "\n" < file >t && mv -f t file

sed -i.bak -e :a -e 'N;s/\n//;ba' file

awk '{printf "%s",$0 }' file >t && mv -f t file

7
এ জাতীয় ওভারকিল, আপনার কি মনে হয় না?
derekerdmann

না এইটা না. আপনি কেন এটি অত্যধিক কিল মনে করেন? ভিমের ভিতরে এটি করা ম্যানুয়াল। এটি আপনি প্রতিবার নিজে হাতে হাতে করতে চান কিনা তা নির্ভর করে, বা একটি নিমেষে সম্পন্ন করার জন্য কেবল এই একটি লাইনারকে সম্পাদন করুন। ভিম সম্পাদক। এবং যে কোনও সরঞ্জাম যা ফাইলগুলি প্রক্রিয়া করতে পারে সেগুলি মূলত ছদ্মবেশে "সম্পাদক"।
ghostdog74

5
এখনও ভিএম এবং ব্যবহার করে ফাইলটি খোলার পক্ষে আরও সহজ ggVGJ
খুব বেশি php

নিশ্চিত, যদি আপনি এটির মাধ্যমে হাতের কাজটি করা সহজ মনে করেন প্রত্যেকবার যখন ডেটার প্রয়োজন হয় সেইভাবে পরিবর্তিত হয়। এগিয়ে যান. এছাড়াও, একটি বড় ফাইল এ চেষ্টা করে দেখুন।
ghostdog74

আমি একগুচ্ছ ফাইল প্রক্রিয়া করছি না; আমি কেবল কয়েকটি লাইনের কোডকে ঘনীভূত করে কাজ করছি।
derekerdmann

1

সমস্যাটি হল যে চর 0 0 এ (\ n) যা অদৃশ্য তা জমে যেতে পারে। ধরুন আপনি 100 লাইন থেকে শেষ পর্যন্ত পরিষ্কার করতে চান:

টাইপিং ESC এবং: (টার্মিনাল কমান্ডার)

:110,$s/^\n//

একটি ভিএম স্ক্রিপ্টে:

execute '110,$s/^\n//'

ব্যাখ্যা: ১১০ থেকে শেষ অবধি নতুন লাইনের সাথে শুরু হওয়া লাইনের সন্ধান করুন (ফাঁকা) এবং সেগুলি সরিয়ে ফেলুন

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