ভিএম: দুটি ফাইলের মধ্যে দুটি বিভাগ আলাদা, তবে পুরো ফাইলটি নয়?


14

আমি নাগিওস 2 থেকে নাগিওস 3 তে একটি সিস্টেম আপগ্রেড করেছি এবং এখন আমি পুরানো এবং নতুন কনফিগারেশন ফাইলগুলির মধ্যে কিছু পার্থক্য তুলনা করছি।

কনফিগারেশন ফাইলগুলিতে উল্লেখযোগ্য পরিবর্তন রয়েছে, এবং আমি পুরো ফাইলে একটি ভিন্নতা সম্পাদন করতে চাই না কারণ ভিমডিফ আমাকে অনেক অপ্রাসঙ্গিক পার্থক্য দেখাচ্ছে এবং #লাইনের শুরুতে মন্তব্যগুলি মোকাবেলা করতে সমস্যা হচ্ছে has

দুটি পৃথক ফাইলে দুটি নির্দিষ্ট বিভাগে একটি পার্থক্য সম্পাদনের জন্য আমি কি ভিআইএম, বা একটি ভিমিডফের মতো কার্যকারিতা ব্যবহার করতে পারি?

উদাহরণস্বরূপ, আমি কেবলমাত্র লাইনগুলিকে পৃথক করতে চাই যা দেখতে এরকম কিছু দেখায়:

# Define a service to check the load on the local machine. 

define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Blah Blah
    check_command                   Blah Blah
    }

উত্তর:


19

এটি লাইনিডিংফের মতো শোনাচ্ছে vvim আপনি যা চান তা হতে পারে: "পাঠ্যের দুটি ব্লকে একটি ইন্টারেক্টিভ ডিফারফর্ম করুন"।

আপনি প্রতিটি ব্লক (লাইন পরিসীমা) এর :Linediffকমান্ড দিয়ে সুনির্দিষ্ট করেন (উদাহরণস্বরূপ :4,10Linediff, অথবা প্রথমে ভিজ্যুয়াল নির্বাচন করুন, তারপরে টাইপ করুন :Linediff(যা বেরিয়ে আসে :'<,'>LineDiff))। ব্যাপ্তিগুলি একই ফাইল / বাফার বা বিভিন্ন থেকে হতে পারে। একবার আপনি দুটি ব্যাপ্তি নির্দিষ্ট করে দেওয়ার পরে এটি একটি নতুন ট্যাব খুলবে যা নির্দিষ্ট রেঞ্জের জন্য দুটি নতুন, ডিফ-মোড বাফার (একটি বিভক্তিতে) রয়েছে। :wআসল রেঞ্জগুলি আপডেট করতে আপনি এই বাফারগুলির মধ্যে দুটিতেও সম্পাদনা করতে পারেন । আপনি যখন কাজটি সম্পন্ন করবেন তখন ভিন্ন :qবাফারগুলির বাইরে এবং :LinediffResetমূল বাফারগুলির মধ্যে পরিসীমা নির্দিষ্টকারীদের থেকে মুক্তি পেতে পারেন।

Stackoverflow উত্তর যেখানে আমি প্রথম linediff.vim এর শিখেছি এছাড়াও ম্যাপিং দুয়েক দাড়ায়। এই প্রশ্নের অন্যান্য উত্তরে একটি কাস্টম সমাধান এবং অন্য একটি প্লাগইনও উল্লেখ করা হয়েছে যা এই একই সমস্যাটিকে মোকাবেলা করতে পারে।


6

এটি করার জন্য আমি খুব সহজ উপায় খুঁজে পাইনি, তবে এনআরআরআরআরগ্রন (ন্যারো অঞ্চল) প্লাগইন, http://www.vim.org/scriptts/script.php?script_id=3075 এর সাথে আমার বেশ ভাল সাফল্য এসেছে । এটি আপনাকে বাফারের একটি অঞ্চল নির্বাচন করতে এবং সেই অঞ্চলটি একটি নতুন বাফারে খুলতে দেয়। আপনি সেই নতুন বাফার সম্পাদনা করতে পারবেন এবং এটি বন্ধ করার পরে প্লাগইনটি স্বয়ংক্রিয়ভাবে আপনার সম্পাদিত পাঠটিকে সেই অঞ্চলে ফিরে আসবে যেখানে আসল ফাইল থেকে আসে। আপনি এক বা একাধিক ফাইলের বিভিন্ন অঞ্চলকে নতুন বাফারগুলিতে অনুলিপি করতে পারেন, তারপরে new নতুন বাফারগুলিতে আলাদা। একটি ফাইলে সংজ্ঞায়িত অনুরূপ ফাংশনগুলির মধ্যে পার্থক্য যাচাই করতে আমি সাধারণত প্লাগইনটি ব্যবহার করি।

আপনার ক্ষেত্রে, আপনি উভয় ফাইল ভিমে খুলতে পারেন, তারপরে Vপ্রথম ফাইলটিতে আগ্রহের বিভাগটি নির্বাচন করতে এবং \nrসেই বিভাগটি একটি নতুন বাফারটিতে অনুলিপি করতে লিখুন । অন্যান্য ফাইলের অনুরূপ বিভাগের জন্য পুনরাবৃত্তি করুন। তারপরে দুটি নতুন বাফারের প্রত্যেকটিতে এক্সিকিউট করুন :diffthis


ধন্যবাদ! কি করবে \nr?
স্টিফান লাসিউস্কি

1
প্লাগইন মানচিত্র <Leader>nr, যেখানে <Leader>ডিফল্ট cop \ `, প্লাগইন কমান্ডে নির্বাচিত অঞ্চলটিকে একটি নতুন বাফারে অনুলিপি করে।
গ্যারিজোহান

@garyjohn আপনি কীভাবে NrrrRgnবিচ্ছিন্নতার ব্যবস্থা করেন ?
দেব

1
@ দেবদেব: আমার my / .vimrc: let g:nrrw_rgn_vert = 1এবং let g:nrrw_rgn_protect = 'n'। এ নীচের দুটি লাইন NrrwRgn কনফিগারেশন রয়েছে । প্রাক্তনটির সাথে, NrrwRgn বর্তমান উইন্ডোটির বাম দিকে খোলে। আমি ভুলে গেছি যদি তারা অবিলম্বে বাম দিকে বা খুব বাম দিকে খুলেন open এটি বলেছিল, আমি এর জন্য আর আর আরআরআরআরগ্রিন ব্যবহার করি না, আরও ভাল কিছু পেয়েছি: লিনেডিফ। এটি একটি নতুন ট্যাবে নতুন অঞ্চলগুলি খুলবে যা আমি আরও সুন্দর এবং আরও সুবিধাজনক বলে মনে করি। আপনি লিন্ডিফ খুঁজে পেতে পারেন http://www.vim.org/scripts/script.php?script_id=3745বা এ https://github.com/AndrewRadev/linediff.vim
গ্যারিজোহান

অনেক ধন্যবাদ @garyjohn। NrrwRgnখুব বাম বা উপরের অংশটি করে, যা বিভাজনকে বেশ নিয়ন্ত্রণহীন করে তোলে। আমি এমনকি !রূপগুলি চেষ্টা করেছিলাম তবে সেগুলি খুব ভঙ্গুর প্রমাণিত হয়েছে (স্ক্রিপ্ট ত্রুটিগুলি + মূল ফাইলটিতে ফিরে যাওয়ার কোনও পরিষ্কার উপায় নেই)। দেবে linediff.vimব্যবহার করে দেখুন খুব যদিও আমি আশা করব NrrwRgnভবিষ্যতে উন্নত।
dev

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