নতুন সমাধান
আপনি :changes
কমান্ডটি দিয়ে আপনার শেষ পরিবর্তনগুলি দেখতে পারেন । সুতরাং আপনি আপনার সাম্প্রতিকতম রেখা পরিবর্তনটি একটি রেইজেক্সের সাহায্যে ফিরিয়ে আনতে পারেন এবং তারপরে matchadd()
@ জোয়েটউইডল এর পরামর্শ অনুসারে লাইনটি প্রয়োগ করতে পারেন ।
কোডটি এখানে:
function! DiffWithPrevious()
call clearmatches()
redir => message
silent changes
redir END
let line = matchstr(message, '\v\n\s{4}1[^0-9]*\zs\d+\ze')
highlight TemporalDiff ctermbg=green guibg=green
let m = matchadd('TemporalDiff', '\%'.line.'l')
endfunction
দ্রষ্টব্য :
এই ফাংশনটি পুরানোটিকে সরিয়ে না দিয়ে কেবল একটি নতুন হাইলাইট যুক্ত করবে, তাই আপনাকে প্রথমে পুরানোটি সরিয়ে ফেলতে হবে। সঙ্গে clearmatches
ফাংশন আপনি একটি নতুন যোগ করার আগে ম্যাচ অপসারণ করতে পারেন। সাবধান, এটি সমস্ত মিলগুলি মুছে ফেলবে । আপনি যদি আরও গ্রানুলারিটি চান, আপনি নিজের ম্যাচটি সংরক্ষণ করতে পারেন এবং এটি ম্যানুয়ালি মুছে ফেলতে পারেন:
যেমন
function! DiffWithPrevious()
call matchdelete(m)
...
let m = matchadd('TemporalDiff', '\%'.line.'l')
endfunction
- কিছু পরীক্ষার পরে, আমি জানতে পেরেছি এটি কেবল এক-লাইন পরিবর্তনের জন্য কাজ করে।
তথ্যসূত্র:
পুরানো সমাধান
এখানে একটি সম্ভাব্য সমাধান রয়েছে যা মূলত ডিফ বর্তমান বাফার এবং মূল ফাইল দ্বারা অনুপ্রাণিত :
function! DiffWithPrevious()
undo
write
redo
let filetype=&ft
diffthis
vnew | r # | normal! 1Gdd
diffthis
exe "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
endfunction
ধারণাটি হ'ল সিস্টেমে ফাইলটির সাথে ফাইলটি পৃথক করা, সুতরাং আপনি আপনার শেষ পরিবর্তনটি পূর্বাবস্থায় ফেলাবেন, লিখুন, লস পরিবর্তনটি আবার করুন এবং ভিন্নটিকে সম্পাদন করুন।
আমি মনে করি এটি সময়ে সময়ে টেম্পোরাল ডিফারেন্সের জন্য কাজ করা উচিত।
matchadd()
তবে ফাইলটির কোন অংশটি পরিবর্তিত হয়েছে তার চেয়ে সামান্য কৌশলটি কাজ করছে।