আমি কীভাবে ডিফ ডিভাইস হিসাবে ভিএম ব্যবহার করব?


101

আমি আমার প্রাথমিক সম্পাদক হিসাবে ভিএম ব্যবহার করি।

আমি সহজেই পরিবর্তনগুলি ঠিক করার জন্য পৃথক করার সময় (ডিফ / ফিক্স / ডিফ / ফিক্সের চক্র যে বেশিরভাগ ভিন্ন কৌশলগুলির চেয়ে) পৃথক্ করার জন্য ফাইলগুলি পৃথক করতে এবং ফাইলগুলি সংশোধন করতে ভিএম ব্যবহার করতে চাই।

অতিরিক্তভাবে উত্স নিয়ন্ত্রণ সরঞ্জাম / সাইটগুলি দ্বারা ব্যবহৃত ভিফকে আলাদা আলাদা সরঞ্জামগুলিতে সংহত করার সহজ উপায় রয়েছে (আমি বিশেষত গিটের কথা ভাবছি তবে আমি নিশ্চিত যে অন্যান্য লোকেরা অন্যান্য উত্স নিয়ন্ত্রণ সরঞ্জাম / সাইটগুলির সাথে সংহতকরণে আগ্রহী হবে)।


1
আপনার ভিম-পলাতক চেষ্টা করা উচিত এটি কমান্ড যুক্ত করে :Gdiffএবং :Gvdiffউভয় কমান্ডই আপনাকে আপনার বাফারটি যদি গিট দ্বারা পরিচালিত হয় তবে আপনি বর্তমান বাফারের পাশাপাশি পাশাপাশি দেখতে পারবেন। আপনি যখন কয়েকটি ফাইলগুলিতে বিবাদগুলি মার্জ করে থাকেন তখন তিনটি উইন্ডো বিন্যাসে দ্বন্দ্ব সমাধান করতেও আপনাকে সহায়তা করে
4:১১

আমার বাশার্কে আমার এই সাধারণ ফাংশন রয়েছে vd () { diff $@ > /dev/null ; if [[ $? -eq 1 ]] ; then ; vimdiff -c 'windo set syntax=off' $@ ; fi ; }এবং আমি এটির সাথে অনুরোধ করছি vd file1 file2diffফাইলগুলি পৃথক হয় কিনা তা নির্ধারণ করতে এটি ব্যবহার করে এবং vimdiffযদি তা হয় তবে কেবল এটি খুলবে । নইলে আমি খোলসে থাকি। আমি ভিমে সিনট্যাক্স হাইলাইটিংটিও অক্ষম করি কারণ বিভেদ করার সময় আমি এটিকে বিভ্রান্তিকর বলে মনে করি। শুধুমাত্র দুটি ফাইল নিয়ে কাজ করে।
রোল্ফ

উত্তর:


122

ভিমে এই কার্যকারিতাটি তৈরি করা হয়েছে (সঠিক কমান্ড লাইন পতাকা সহ)।

vim -d <file1> <file2>

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

তবে একটি মোড়কের অ্যাপ্লিকেশনটিও রয়েছে vimdiffযা সঠিকভাবে সঠিক ফ্ল্যাগগুলির সাথে ভিএমকে অনুরোধ করে।

vimdiff source1.cpp source2.cpp

আপনি যদি গিট ব্যবহার করছেন তবে আপনি একটি বাহ্যিক ডিফ সরঞ্জাম নির্ধারণ করতে পারেন। সুতরাং গিটের জন্য পৃথক সরঞ্জাম হিসাবে ভিমডিফ সেট আপ করা সহজ।

git config --global diff.tool vimdiff

ভিমিডিফ ব্যবহার করার সময় আপনি উভয় পক্ষের সম্পাদনা করতে পারবেন এবং হাইলাইটিং আপনাকে পার্থক্যগুলি দেখানোর জন্য গতি বজায় রাখে।

দ্রষ্টব্য: গিট ডিফ থেকে সম্পাদনা করার সময়। আপনি যদি ফাইলটির ভাণ্ডার সঞ্চিত সংস্করণটি চেষ্টা করে ও সম্পাদনা করেন তবে আপনি বেরোনোর ​​সময় আপনার পরিবর্তনগুলি বাতিল করা হবে (গিটটি আপনাকে মূলটির সাথে বিশ্বাস করে না তাই আপনি একটি টেম্পিপি অনুলিপিটির বিপরীতে চলেছেন) তবে আপনি স্থানীয় কপিটি আপনার হৃদয়ের সামগ্রী এবং সম্পাদনা করতে পারবেন আপনার বর্তমান সংস্করণে এটি সংরক্ষণ করুন।

কিছু বেসিক কমান্ড যা দরকারী vimdiff

dp             diffput: puts changes under the cursor into the other file
                        making them identical (thus removing the diff).
do             diffget: (o => obtain). The change under the cursor is replaced
                        by the content of the other file making them identical.


]c             Jump to the next diff
[c             Jump to the previous diff

অন্যান্য ভিম সেটিংস আমি ভিমডিফ দিয়ে হাইলাইট করার সাথে কাজ করতে ব্যবহার করি

if &diff
    highlight! link DiffText MatchParen
endif

এটি পরিবর্তিত হওয়া কোডের বিটগুলিতে হাইলাইটিং বন্ধ করে দেয়। সুতরাং যে রেখাটি পরিবর্তন করা হয়েছে তা হাইলাইট করা হয়েছে যাতে আমি পরিবর্তনগুলি স্পষ্ট করতে পারি, তবে প্রকৃত পাঠ্য যা পরিবর্তিত হয়েছে তা লাইনে দাঁড়িয়ে আছে (এটি হাইলাইট করা হয়নি)।


4 টি বাফার পর্যন্ত পরিচালনা করে, এটি কনফিগারেশন ফাইলগুলির সাথে তুলনা করার জন্য দুর্দান্ত করে
তুলেছে

34
আপনি :diffthisযখন ভিম ইতিমধ্যে চলমান থাকে তখন একটি পৃথকীকরণ শুরু করতে কমান্ডটিও ব্যবহার করতে পারেন ।
ধনী

11
এবং: এটি বন্ধ করার জন্য ডিফফফ। আমি ভিমের ডকুমেন্টেশনের একটি লিঙ্ক উপকারী হবে বলে মনে করি: vimdoc.sourceforge.net/htmldoc/diff.html
কোডি পোল

1
আমার পরেও git config --global diff.tool vimdiff, git diffএখনও কিছু না দেখায় এমন কিছু প্রদর্শন করে।
হাই-এঞ্জেল

2
চেষ্টা করুনgit difftool
মার্টিন ইয়র্ক

13

আপনি যদি একটি উন্মুক্ত ফাইল সম্পাদনা করে থাকেন এবং বর্তমান ফাইলটি বন্ধ না করে এটিকে অন্য কোনও ফাইলের সাথে তুলনা করতে চান:

বিভক্ত স্ক্রিনে নতুন ফাইলটি খুলুন:

উল্লম্ব বিভাজনের জন্য:

:vs otherFile

বা অনুভূমিক বিভাজন:

:split otherFile

কার্সারকে বিভিন্ন বিভক্ত স্ক্রিনে স্যুইচ করুন:

ctrl+w ctrl+w

ফাইলটিতে "ডিফফ মোড" চালান:

:diffthis

অন্যান্য ফাইলে স্যুইচ করুন এবং "ডিফ ডিগ্রি মোড":

:diffthis

"ডিফ ডিগ্রী" বন্ধ করতে:

:diffoff

5
বাফার আপনি ব্যবহার করতে পারেন মধ্যে স্যুইচ এড়াতে :windo diffthisখুব
statox

4

আপনি বর্তমানে লগ ইন করা ব্যবহারকারীর ডিরেক্টরি (বা ) ডিরেক্টরিতে .gitconfigপাওয়া ফাইলটিতে নীচে উল্লিখিত সেটিংস রাখতে পারেন :%homepath%%userprofile%

[diff]
    tool = vimdiff

এটি গিট ব্যাশ সরঞ্জামকে বাইরের ডিফ সরঞ্জাম হিসাবেও ভিডমিফ ব্যবহার শুরু করতে সক্ষম করবে।



2

আমি ভিফকে ডিফ্টল হিসাবে ব্যবহার করতে কেবল তিনটি পরিস্থিতি দেখতে পাচ্ছি। সেগুলি নীচে সংক্ষেপে বর্ণিত হয়েছে:

  • গিট ডিফ্টল এর জন্য, নিম্নলিখিতটি আপনার মধ্যে রাখুন ~/.gitconfig:

    [core]
    editor = vim
    [diff]
    tool = vimdiff
    [merge]
    tool = vimdiff
    conflictstyle = diff3
    
  • দুটি ফাইলের জন্য ডিফ-টুল হিসাবে ভিএম খুলতে, আপনি নিম্নলিখিতটি করতে পারেন:

    vimdiff file1.ext file2.ext      # for vim
    nvim -d file1.ext file2.ext      # for neovim
    
  • বর্তমানে সক্রিয় থাকা বাফারগুলির জন্য পৃথক দৃষ্টিভঙ্গি পেতে, অর্থাৎ বর্তমানে সক্রিয় ট্যাবপেজটিতে একটি উইন্ডো নির্ধারিত সমস্ত বাফার, আপনি নিম্নলিখিতটি করতে পারেন:

    :windo diffthis                " to get diff view
    :windo diffoff                 " to remove diff view
    

আরও তথ্যের জন্য, দেখুন :h diff


1

আমি এখানে কি করছি:

  • প্রথম ফাইল (বা আপনি ডেটা পেস্ট করছেন তবে পাঠ্য সামগ্রী) সহ একটি উইন্ডো খুলুন
  • পরের ফাইল / উইন্ডোটি খুলুন :vnew(উভয় উইন্ডো পাশাপাশি থাকার জন্য) বা :new(উইন্ডোগুলির উপরে এবং নীচে থাকতে হবে)। আপনার যদি দ্বিতীয় উইন্ডোতে খোলার জন্য একটি নির্দিষ্ট ফাইল থাকে তবে আপনি এই জাতীয় পথটি অন্তর্ভুক্ত করতে পারেন::vnew /path/to/secondfile.txt
  • একটি কাস্টম ফাংশন টগল করতে F8 ব্যবহার করুন যা ডিফ মোডটি চালু এবং বন্ধ করে দেয়

আমার নিজস্ব কাস্টম ফাংশনটি এখানে ~/.vimrc:

nmap <silent> <F8> :call ToggleDiff()<CR>
imap <silent> <F8> <C-O>:call ToggleDiff()<CR>
function ToggleDiff ()
    if (&diff)
        set nodiff noscrollbind
    else
        " enable diff options in both windows; balance the sizes, too
        wincmd =
        set diff scrollbind nowrap number
        wincmd w
        set diff scrollbind nowrap number
        wincmd w
    endif
endfunction

আপনি কমান্ডটি ব্যবহার করতে পারেন :diffthisএবং diffoff!সুতরাং আপনাকে সমস্ত বিচিত্র বিকল্পগুলি নিজেই সেট করতে হবে না (যেমন কার্সারবাইন্ডটিও ডিফমোড দ্বারা সেট করা হয়)
ক্রিশ্চিয়ান ব্র্যাব্যান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.