কীভাবে ভিআইএমের পূর্বাবস্থায় গাছ ব্যবহার করা হয়?


132

এই উত্তর বলে:

ভিমের আনডো / রিডো সিস্টেম অপরাজেয়। কিছু টাইপ করুন, পূর্বাবস্থায় ফিরে যান, অন্য কিছু টাইপ করুন এবং আপনি টাইপ করা প্রথম জিনিসটি এখনও পেতে পারেন কারণ ভিম স্ট্যাকের পরিবর্তে একটি পূর্বাবস্থায় গাছ ব্যবহার করে। প্রায় প্রতিটি প্রোগ্রামে, আপনি প্রথম যে জিনিস টাইপ করেছেন তার ইতিহাস এই পরিস্থিতিতে হারিয়ে যায়।

এটিই আমি এই প্রথম শুনি। আমি কীভাবে গাছ বরাবর ট্র্যাক করতে পারি?


1
হিংসুক ইম্যাকস ব্যবহারকারীগণ পূর্ববর্তী গাছ-মোড সম্পর্কে জানতে চাইতে পারেন ।
অ্যারন মিলার

উত্তর:


142

এছাড়াও দেখুন :h undo-redo, যা সমস্ত কমান্ড এবং তাদের ব্যবহারের তালিকা করে।

পূর্বাবস্থায় ফেরা গাছ দুটি পেরোতে হয়। একটি "সময় ফিরে" যেতে হয়। g+এবং g-গাছের সমস্ত নোডকে কালানুক্রমিক বা বিপরীত কালানুক্রমিক ক্রমে অতিক্রম করবে (যা কিছুটা বিভ্রান্তিকর হতে পারে, কারণ এটি পূর্বাবস্থায়িত শাখাগুলির মধ্যে নির্বিচারে লাফিয়ে উঠতে পারে, তবে আপনি যদি g-দীর্ঘ পরিমাণে কাজ করেন তবে সর্বদা আপনার যেখানে যেতে হবে সেখানে পৌঁছে যাবেন অবশেষে). :earlierএবং :laterএকটি সময় বর্ণনাকারীর মতো 7mবা নিতে 1h; আবার এটি পূর্বাবস্থায়িত শাখাগুলির মধ্যে আপনি নির্বিচারে লাফিয়ে উঠতে পারে।

অন্যান্য উপায় গাছ ব্যবহার করে নির্দিষ্ট নোড ঝাঁপ হয় :undo nযেখানে nএকটি কর্মের একটি সংখ্যা। (সমস্ত ক্রিয়াকলাপ, যেমন পাঠ্য সংযোজন, মুছে ফেলা, প্রতিস্থাপনগুলি যথাযথভাবে আপনি যেমন করেন তেমন নম্বরযুক্ত)) এর মাধ্যমে আপনি পূর্ববর্তী গাছের পাতায় ক্রিয়াগুলির সংখ্যাটি সন্ধান করতে পারেন :undolist। এটি আপনাকে শাখাগুলির মধ্যে সহজেই লাফিয়ে উঠতে দেবে। তারপরে আপনি ব্যবহার করতে পারেন uএবং Ctrl-Rসেই শাখার উপরে এবং নীচে যেতে।

ভিম সাহায্যে কিছু ভাল উদাহরণ রয়েছে। এটি কীভাবে কাজ করে তা নির্ধারণ করার সেরা উপায়টি এটির সাথে কিছুটা খেলে।


43
আপনি শাখা মার্জ করতে পারেন? (আমি মজা করছি)
তিনি_গ্রেট

40
কিন্ডা সন্ধান করুন: এইচ আনডোজোইন
পড

23
ভিম এত দুর্দান্ত যে এটি আমাদের উপহাসের উপায়গুলি প্রয়োগ করে এমনকি এটি কতটা দুর্দান্ত!
andyortlieb

4
আমি কীভাবে এই পূর্বাবস্থায় গাছটি ব্যবহার করব তা জানতাম না, তবে আমি জানতাম এটি কোনও দিন আমার জীবন রক্ষা করবে। ঠিক আছে, দিন এসে গেছে। ধন্যবাদ !!
ndvo

1
@ পড দেখে মনে হচ্ছে undojoinশাখাগুলির সাথে কোনও সম্পর্ক নেই; প্রকৃতপক্ষে, পরের সাহায্যের বিভাগটি "উপরের দিকে আমরা কেবল পূর্বে / পূর্বাবস্থায় ফেরার একটি লাইন নিয়ে আলোচনা করেছি But তবে এটি শাখা বন্ধও সম্ভব" " undojoinশাখাগুলি ব্যবহার করার কোনও উপায় আছে যা আমি কেবল দেখছি না?
কাইল স্ট্র্যান্ড

70

আমি পার্টিতে কিছুটা দেরি করেছি, তবে আমি বুঝতে পেরেছিলাম যে আমি ভিমের জন্য একটি পূর্বাবস্থায় বৃক্ষের দৃশ্যায়ন প্লাগইন লিখেছিলাম: http://bitbucket.org/sjl/gundo.vim/

ব্যক্তিগতভাবে আমি দেখতে পেয়েছি যে গাছটিকে এভাবে গ্রাফিক করা কেবলমাত্র এটিই বোঝাতে পারি।


আরো আপ-টু-ডেট Git সংগ্রহস্থলের এ বিদ্যমান github.com/sjl/gundo.vim । ভিএম-প্লাগের সাহায্যে প্লাগইনটি ইনস্টল করা যেতে পারে Plug 'sjl/gundo.vim'এবং তারপরে nnoremap <F5> :GundoToggle<CR>( <F5>আপনি যে কী কী
ক্রমিকের


16

আপনি যদি ভিএম ব্যবহার করছেন তবে আপনি পূর্বাবস্থায় গাছ ব্যবহার করে ন্যাভিগেট করতে পারেন:

  • u: (পূর্বাবস্থায়) পূর্বাবস্থায় ফিরে যান in
  • Ctrl+R: (পুনরায়) পূর্বাবস্থায় ফিরে যান

সময়মতো দলিলটি ফিরিয়ে আনার অন্যান্য উপায়:

  • :earlier 15m: 15 মিনিটে সময় ফিরে যান
  • :later 15m: সময় 15 মিনিটের সামনে সরান

2
এই উত্তরটি কেবল একটি শাখায় কীভাবে সামনের দিকে এবং পিছনে যেতে হবে তা ব্যাখ্যা করে। শাখাগুলির মধ্যে কীভাবে সরানো যায় তা নয়।
জোনাথন হার্টলি

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

@ জোনাথান হার্টলি, আপনি যদি ব্যবহার করছেন earlierএবং laterএটি শাখাগুলি জুড়ে না চলেছে। আমি প্রত্যাশা করব যে বেশিরভাগ লোকেরা তাদের তৈরি বিভিন্ন শাখাগুলি সত্যিই যত্ন করে না বা মনে রাখে না। তবে ঠিক সময়ে ফিরে যেতে চাই। আপনি যদি শাখা তৈরি করতে এবং সেগুলির নাম সম্ভবত রাখতে চান gitবা কোনও সংস্করণ নিয়ন্ত্রণ ব্যবস্থা একটি ভাল বিকল্প।
alpha_989

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

সবার জন্য ধন্যবাদ পূর্বের / পরে ডিও শাখাগুলি জুড়ে সরানো!
জোনাথন হার্টলে 21

9

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

একটি নতুন ফাইল তৈরি করুন এবং টাইপ করুন:

this is a line

undolপূর্ববর্তী গাছটি প্রদর্শন করবে display এই মুহুর্তে আপনি কোনও কিছুই পূর্বাবস্থায় ফেরাতে পারেন নি

:undol

number changes  when               saved
     1       1  14:50:36

এখন ESC টিপুন এবং এতে লাইনটি সংশোধন করুন:

this is a old line

সাধারণ মোডে স্যুইচ করুন এবং টিপুন (পূর্বাবস্থায়), এটি "পুরানো" মুছে ফেলা উচিত। আপনি যদি পরীক্ষা undolকরেন তবে এই মুহুর্তে আপনার কেবলমাত্র একটি শাখা রয়েছে।

এখন লাইনটি পরিবর্তন করুন যাতে এটি বলে:

this is a new line

এখন :undolদেখায়:

number changes  when               saved
     2       2  87 seconds ago
     3       2  3 seconds ago

আপনি টাইপ করে প্রথম শাখায় স্যুইচ করতে পারেন

:u 2

এটি আপনাকে 2 নম্বর যুক্ত শাখার শেষ প্রান্তে নিয়ে যাবে You g+এবং এই শাখাটি ধরে আপনি যেতে পারেন g-। এই মুহুর্তে g+কিছুই করবে না (আপনি পাতায় আছেন)। আপনি g-"পুরানো" টিপলে মুছে ফেলা হবে (আপনি প্রথম পূর্বাবস্থার গাছটি অনুসরণ করছেন)। এটি যদি আপনি "পুরাতন" দিয়ে মুছে ফেলে g-টিপেন তবেg+ আবার, 'পুরানো' পুনরায় করা হবে।

যদি আপনি টাইপ করেন

:u 3

আপনি দ্বিতীয় পূর্ববর্তী শাখার পাতায় ঝাঁপিয়ে পড়বেন এবং এটি পড়বেন:

this is a new line


3

Gundo.vim ব্যবহার করার পাশাপাশি আমি উল্লেখ করতে চাই g+এবংg-


3

প্যাকেজটি পূর্বনির্ধারিত খাঁটি উইমস্ক্রিপ্টে লেখা তাই কোনও প্রয়োজন নেই।

এটি খুব দেরী হওয়ার আগে এটি আপনার ভিআমআরসি-তে যুক্ত করুন:

  set nobackup
  set noswapfile
  set nowritebackup
  set undolevels=10000         " use many levels of undo
  set history=10000    " After nocompatible

  if has('persistent_undo')
    set undodir=$HOME/.vim/undo
    set undofile 
  endif 

এখানে চিত্র বর্ণনা লিখুন

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