আমি কীভাবে আমার পূর্বাবস্থায় থাকা ইতিহাসকে বামে ফেলে দিতে পারি?


23

পূর্বাবস্থায় ভিমে থাকতে ভাল লাগল। তবে কখনও কখনও, একটি ভাল ভাল পয়েন্টে, আমি আমার পূর্ববর্তী ইতিহাস মুছতে চাই - uপৃথক পরিবর্তনগুলি পূর্বাবস্থায় ফেলার জন্য ব্যবহার করতে সক্ষম হতে , তবে কেবল একটি নির্দিষ্ট বিন্দুতে ফিরে যেতে। (উদাহরণস্বরূপ, এটি যখন আমি সর্বশেষ প্রতিশ্রুতিবদ্ধ তখন হতে পারে))

এটি সম্পাদন করার একটি উপায় হ'ল ফাইলটি বন্ধ করা এবং পুনরায় খোলা - পূর্বাবস্থায় ফিরানো ইতিহাস সেই সময়ে পরিষ্কার শুরু হয়। তবে এটি একটি ঝামেলা।

অতীতে, আমি এটি দিয়ে সম্পন্ন করেছি :edit!। তবে ভিমে .3.৩-এ, এটি পূর্বাবস্থায় ফিরে যাওয়া ইতিহাসকে বাদ দেয় না।

ফাইলটি বন্ধ করা ছাড়াও এটি করার কী অন্য কোনও উপায় আছে?


সুতরাং আপনি আসলে কেবল ফাইলটির অবস্থা পুনরুদ্ধার করতে চান যেমন এটি আপনার শেষ প্রতিশ্রুতিতে ছিল? আপনি মূলত কেবল 'ইউ' কীটি পুনরায় তৈরি করতে চান git checkout -f fileবা এর মতো কিছু hg rollback file?
আকির

@ কীরা - না, আমি uস্বতন্ত্র পরিবর্তনগুলি পূর্বাবস্থায় করতে সক্ষম হতে চাই , তবে আমি যে প্রতিবেদনে সর্বশেষ প্রতিশ্রুতিবদ্ধ হয়েছিল তা পেরেছি না। ঠিক যেমন, প্রতিবার প্রতিশ্রুতিবদ্ধ হওয়ার পরে, আমি ফাইলটি বন্ধ করে দিয়েছিলাম এবং এটি আবার খুললাম। কোনটি :edit!ব্যবহার করত - এটি ফাইলটি বন্ধ করে পুনরায় খোলার মতো ছিল। এটি কোন প্রতিশ্রুতিবদ্ধ বিন্দুতে আবদ্ধ হওয়ার দরকার নেই, এই সময়টি যখন আমি প্রায়শই ঘন ঘন চাইতাম।
নাথান লং

আহ, সমস্যাটি আরও পরিষ্কার করে দেয়। আপনার আপনার প্রশ্নটি কিছুটা পরিবর্তন করা উচিত।
আকির

উত্তর:


11
:set undoreload=0 | edit

আপনি যা চাইছেন তা করা উচিত।


1
হা! কেবল এই বৈশিষ্ট্যটি বন্ধ করুন, তাই না? :) নিশ্চিত না কেন আমাকে এটি খেয়াল করতে এত সময় লেগেছে।
নাথান লং

7

পুরানো: সম্পাদনা! এক-লাইনারে আচরণ:

:exe "set ul=-1 | e! | set ul=" . &ul

এটা কাজ করে। আপনি এটি ব্যাখ্যা করতে আপত্তি করতে হবে?
নাথান লং

কমান্ডগুলির স্ট্রিংয়ের শেষে আনডোলেভেলস সেটিংয়ের মান সংযুক্ত করুন (যাতে এটি পুনরুদ্ধার করা যায়) এবং সেগুলি কার্যকর করে। আরও তথ্যের জন্য ডকুমেন্টেশন দেখুন: :h :exe, :h :bar, :h :set-args, :h 'ul'এবং :h :edit!
অলড্রিক

6

বেনোইটের ফাংশনটি আমার পক্ষে কাজ করে নি, তবে আমি এখানে ভিআইএম ম্যানুয়ালটিতে অনুরূপ কিছু পেয়েছি:

http://www.polarhome.com/vim/manual/v73/undo.html#undo-remarks

আমি এটিকে একটি ফাংশনটিতে চড় মারলাম, আমার ভিএমআরসি-তে যুক্ত করেছি এবং মনে হচ্ছে এটি ভিএম 7.3-এ খুব ভাল কাজ করছে:

" A function to clear the undo history
function! <SID>ForgetUndo()
    let old_undolevels = &undolevels
    set undolevels=-1
    exe "normal a \<BS>\<Esc>"
    let &undolevels = old_undolevels
    unlet old_undolevels
endfunction
command -nargs=0 ClearUndo call <SID>ForgetUndo()

এটি দিয়ে ব্যবহার করা যেতে পারে :ClearUndo


1
গুন্ডো প্লাগইন সহ সাধারণভাবে কাজ করা এবং ফাইল পুনরায় লোড করা পূর্বে, এই জিনিসটি আমার পক্ষে সত্যিই কার্যকর really যাইহোক, আমি দুটি জিনিস পরিবর্তন করেছি: সাধারণ সম্পাদনা কমান্ডের পরিবর্তে (যা নিজে some.৪ তে কিছু সম্পাদনার ইতিহাস ছেড়ে দেয়) মনে হয়, আমি কেবল একটি সম্পাদনা ব্যবহার করি! (এবং সর্বদা পূর্বাবস্থায় ফেরা ইতিহাস মুছে ফেলার আগে লিখুন)। দেখে মনে হচ্ছে কিছু অভ্যন্তরীণ তালিকা সঠিকভাবে আপডেট করা হয়নি, তাই আপনি যদি অতিরিক্ত সম্পাদনা করে গুন্ডো প্লাগইন দিয়ে এটি ব্যবহার করতে চান! ফাংশন শেষে এটিকে পরে ত্রুটি থেকে রোধ করবে।
প্লাজমাএইচএইচ

@ প্লাজমাএইচএইচ আপনি দয়া করে পূর্বাবস্থার ইতিহাস সাফ করার জন্য ফাংশনটি পোস্ট করতে পারেন, কারণ আপনি কী বদলেছেন তা আমি বুঝতে পারি নি ... (আমরা সম্ভবত যারা গুন্ডু ব্যবহার করি তাদের উত্তর হিসাবে আপনি এটি পোস্ট করতে পারেন)। ধন্যবাদ
বেন

5

সম্ভবত:

:let old_ul=&ul
:set ul=-1
:let &ul=old_ul
:unlet old_ul

(এর 'ul'জন্য উপনাম 'undolevels')।


এইটা কাজ করে! এখন আমি একটি একক কমান্ড এটি করার চেষ্টা করছি - পছন্দমত :edit!। একটি শুরুর হিসেবে আমি কমান্ড আপনার তালিকাভুক্ত করা একটি ফাংশন বলা ClearUndos () তৈরি করেছি, কিন্তু এটা কলিং, কিছু করতে বলে মনে হচ্ছে না যেহেতু স্বতন্ত্রভাবে কমান্ড করছেন না ...
নাথন লং

3
:command -nargs=0 Reset let old_ul=&ul | set ul=-1 | e! | let &ul = old_ul | unlet old_ul
বেনোইট

এটি কি ফাংশনের বিষয়বস্তু হতে বোঝায়? এটি আমার পক্ষে কাজ করছে না তবে আমি ভুল বুঝেছি। এছাড়াও - সম্ভবত এটি নিজের উত্তর থেকে সরান?
নাথান লং

হতে পারে আপনি |কোনও কমান্ডের সামগ্রীতে কাঁচা রাখতে পারবেন না । তারপরে একটি ফাংশন তৈরি করুন যা আমি আমার উত্তরে যা বলেছি তা করে, এবং আদেশটি সেট করে call thefunction()
বেনোইট

3

"পূর্বাবস্থার ইতিহাস সাফ করুন (: যদি উপস্থাপন করা হয় তবে পূর্বাবস্থার ফাইলটি সাফ করতে w)
command! -bar UndoClear exe "set ul=-1 | m-1 | let &ul=" . &ul

  • আপনি যখন 'আনডোভেলভেলস' -1 এ সেট করেন তখন পূর্বাবস্থায় থাকা তথ্যগুলি তাত্ক্ষণিকভাবে সাফ করা হয় না, এটি পরবর্তী পরিবর্তনে ঘটে, অর্থাত্ m-1, যা আসলে আপনার পাঠ্য পরিবর্তন করে না।
  • কখন 'undofile'চালু থাকে, :wপূর্বাবস্থায় ফেলা ফাইল বা চেনের মতো সাফ করতে UndoClear|w

1

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

function! <SID>ForgetUndo
     let old_ul = &ul
     set ul=-1
     let &ul = old_ul
     unlet old_ul
endfunction
command -nargs=0 Reset call <SID>ForgetUndo()

তারপরে :Resetএটি কল করতে ব্যবহার করুন ।


আপনার ফাংশন সংজ্ঞা লাইনের শেষে () প্রয়োজন।
নাথান লং

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