আমি আমার শেষ সম্পাদনাটির স্থানে কীভাবে লাফিয়ে যাব?


68

আমি প্রায়শই একটি বড় ফাইলের মাঝামাঝি পরিবর্তনগুলি করি gg, কিছু পরীক্ষা করতে উপরের দিকে ঝাঁপিয়ে পড়ি এবং তখন বুঝতে পারি যে আমি যেখানে সম্পাদনা করছি সেখানে একটি চিহ্ন স্থাপন করতে ভুলে গিয়েছি। শেষ-পরিবর্তিত লাইনের অবস্থানটিতে ঝাঁপ দেওয়ার কোনও অন্তর্নির্মিত উপায় আছে কি?

উত্তর:


84

`.কমান্ড আপনার শেষ পরিবর্তন আনতে হবে।

`একটি চিহ্ন থেকে যায়, এবং .একটি "বিশেষ" চিহ্ন যা স্বয়ংক্রিয়ভাবে অবস্থান যেখানে শেষ পরিবর্তন হয়েছিল সেট আছে। আরও :help `.কিছু তথ্যের জন্য দেখুন ।

এছাড়াও রয়েছে ``যা আগে আপনি আপনার শেষ লাফ দিয়েছিল যেখানে কার্সার ছিল আপনাকে ফেরত নিয়ে আসবে। দেখুন :`` আরও তথ্যের জন্য সহায়তা।

আর একটি দরকারী চিহ্ন হ'ল `^; theোকানো মোডটি বন্ধ করার পরে কার্সারটি সর্বশেষে এটিই অবস্থান। দেখুন :help `^

:help mark-motionsচিহ্নগুলি ব্যবহার করার জন্য আরও কিছু সাধারণ তথ্যের জন্য দেখুন (স্বয়ংক্রিয়ভাবে সেট করা কিছু অন্যান্য "বিশেষ" চিহ্নগুলি সহ)।


7
এছাড়াও আপনি ব্যবহার করতে পারেন g;এবং g,পরিবর্তন তালিকায় অবস্থান মধ্যে চলাচল করে। দেখুন :h g;এবং:h g,
পিটার রিঙ্কার

3
আপনি (ব্যাকটিক) 'পরিবর্তে `(অ্যাডাস্ট্রোফ) ব্যবহার করতে পারেন ।
স্পারহক

21

এখানে আপনার দেওয়া দৃশ্যের সাথে মানানসই আরও একটি পদ্ধতি রয়েছে এবং যেখানে আপনি অবিলম্বে gg(শেষ পরিবর্তিত লাইনের সাথে নয়) আগে যেখানে ছিলেন সেখানে পৌঁছাবেন ।

ব্যবহার CtrlO

আপনি যখন টিপেন gg, আপনার পুরানো কার্সার অবস্থানটি জাম্প তালিকার উপরে ঠেলা যায় । থেকে :help jumplist:

লাফানোর তালিকায় জাম্পগুলি স্মরণ করা হয়। সঙ্গে CTRL-Oএবং CTRL-I কমান্ড আপনাকে ফিরে আবার পুরোনো জাম্প আগে কার্সার অবস্থানের ফিরে যেতে পারেন, এবং। সুতরাং আপনি তালিকার উপরে এবং নীচে সরাতে পারেন। প্রতিটি উইন্ডোর জন্য পৃথক জাম্পের তালিকা রয়েছে। এন্ট্রি সর্বাধিক সংখ্যা 100 স্থির করা হয়।

[...]

আপনি যদি একটি জাম্প কমান্ড ব্যবহার করেন তবে বর্তমান লাইন নম্বরটি জাম্প তালিকার শেষে সন্নিবেশ করা হবে। যদি একই লাইনটি ইতিমধ্যে জাম্প তালিকায় ছিল তবে এটি সরানো হবে। ফলাফলটি হ'ল পুনরাবৃত্তি করার সময় CTRL-Oআপনি একবারে পুরানো পজিশনে ফিরে আসবেন।

এর জন্য আপনি +jumplistবৈশিষ্ট্যটি সহ Vim (vi নয়) ব্যবহার করছেন requires যদি :echo has('jumplist')প্রিন্ট করে 1তবে আপনি এটি ব্যবহার করতে পারেন।


19

ড্যান্টেসার এর উত্তর এবং পিটার রিনকারের মন্তব্যে যুক্ত করতে, ভিম পরিবর্তনগুলির একটি তালিকা বজায় রাখে এবং এর সাথে কিছু কমান্ড যুক্ত রয়েছে।

:changes

পরিবর্তনগুলি তালিকাবদ্ধ করে আপনাকে দেখায় যে তারা কোথায় ছিল এবং সেগুলি কী ছিল। উদাহরণ স্বরূপ:

change line  col text
    2     8   17 #include <stdio.h>
    1     3    0 #include "stm32f407.auto.h"
>

>পরিবর্তনের স্ট্যাকটিতে আপনি যেখানে রয়েছেন তার সাথে রেখাটি , ধরণের লাফের তালিকা ( :jumps) বা ট্যাগ স্ট্যাকের মতো ( :tags)। জাম্প তালিকা এবং ট্যাগ স্ট্যাকের মতো আপনিও এই তালিকাটি অতিক্রম করতে পারেন।

স্বাভাবিক মোডে, গতিগুলি g;পূর্ববর্তী পরিবর্তনের জায়গায় যেতে এবং পরেরটিতে যেতে হয় g,। আপনি তালিকাটি থেকে পরিবর্তনটি পরিবর্তন করতে যাওয়ার আগে g;বা তার আগে যাবার পরিবর্তনটি টাইপ করতে পারেন g,। উপরে, 2g;আমাকে যেখানে stdio.h এর সাথে জড়িত পরিবর্তন ঘটেছিল সেখানে নিয়ে যাবে।

স্ট্যাকের মাঝামাঝি সময়ে, :changesআপেক্ষিক দূরত্বগুলি দেখানোর জন্য আপডেটগুলি থেকে সংখ্যাগুলি । উদাহরণ স্বরূপ:

change line  col text
    1     8   17 #include <stdio.h>
>   0     3    0 #include "stm32f407.auto.h"
    1    10    4 other

এ থেকে জানা যায় আমি ফিরে এক (যেতে পারেন 1g;বা শুধু g;) অথবা এগিয়ে এক ( 1g,বা শুধু g,)।

আপনি যে পরিবর্তনটি পেতে চান তা যদি কিছু পরিবর্তন আগে ঘটে থাকে তবে এটি দুর্দান্ত

এর অসুবিধা হ'ল এটি সাধারণ গতির মতো কাজ করে না বলে মনে হয়। উদাহরণস্বরূপ, আপনি dg;কার্সার থেকে পূর্বের পরিবর্তনের স্থানে মুছতে পারবেন না d'.এবং d'^গতি হিসাবে কাজ করবেন।


15

g; পূর্বে সম্পাদিত লাইনে যাবে।


3
আপনি আরও নতুন সম্পাদনা অবস্থানে যেতে g, (কমা) ব্যবহার করতে পারেন।
জেমস

5

যেহেতু শেষ কমান্ডটি পূর্বাবস্থাগুলি পূর্বাবস্থায় uuফিরে আসার পরে ভির অ্যান্ডো কমান্ড পুনরায় করণ হিসাবে কাজ করবে, তাই আমি যেখানে সর্বশেষ সম্পাদনা করেছি সেখানে ফিরে যাওয়ার উপায় হিসাবে ব্যবহার করেছি।

আপনার সাথে তেজ চালিয়ে থাকেন nocompatibleসেট (অধিকাংশ মানুষ কি হিসাবে), আপনি ব্যবহার করতে চান uদ্বারা অনুসরণ CTRL+Rপূর্বাবস্থা & পুনরায় করতে। অন্যথায় uuvi তে যেমন কাজ করবে।


এটি :set nocompatibleব্যবহার করা না হলে হবে ।
মুরু

2
আমার vim(সহ nocompatible) দুটি পূর্বাবস্থায় কাজ করে uuতবে আমি ব্যবহার করি uএবং CTRL+rএকই প্রভাবের জন্য।
শাহবাজ

আইস / এইচপিউএক্স / সোলারিস / অন্যান্য ইউনিক্স ভেরিয়েন্টে আপনার কোনও ভিম ​​না থাকলে, এই জবাবটি vi এর সাথেও কাজ করে।
গুট্রাম ব্লুম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.