পুনরাবৃত্তির ইতিহাস অনুসন্ধান না হারিয়ে আমি কি কমান্ড লাইনে ভিম সম্পাদনা মোড ব্যবহার করতে পারি?


8

আমি zsh উজিং করছি এবং, কারণ আমি একজন আগ্রহী ভিম ব্যবহারকারী, আমি কমান্ড লাইনে ভিম-স্টাইল সম্পাদনাটি সরিয়ে নিয়েছি। (মানে আমি যদি যে ধরনের ls foo/barএবং সিদ্ধান্ত আমি চাই cdপরিবর্তে, আমি মারতে পারেন Esc ^শুরুতে এবং ফিরে প্রস্থান করার জন্য cw cdপরিবর্তনের lsজন্য cd

এগুলি সবই ড্যান্ডি, তবে সমস্যাটি হ'ল আমি আর Ctrl+Rপুনরাবৃত্ত ইতিহাস অনুসন্ধান করতে আর ব্যবহার করতে পারি না। এটি করার অন্য কোনও উপায় আছে বা আমি কীভাবে কোনওভাবেই এটি ফিরে পাওয়ার জন্য ভিম কী-বাইন্ডিংকে ওভাররাইড করতে পারি?


একটি কঠিন পছন্দ! garyjohnএটি করার একটি ভিম উপায় JdeBPদেখায় এবং কীভাবে Ctrl + R এর কী-বাইন্ডিং পাবেন তা দেখায়! আমি উভয় পদ্ধতি নিয়ে খেলতে যাচ্ছি এবং পরে একটি উত্তর গ্রহণ করব। আমি 1 এর উপর ভিত্তি করে সিদ্ধান্ত নেব) কোন পদ্ধতিটি আমার কাছে সহজ মনে হয় এবং 2) কোনটি আরও উচ্চতর হয়। আপনাদের দুজনকেই ধন্যবাদ!
নাথান লং

উত্তর:


6

অবশ্যই আপনি আর Ctrl+ ব্যবহার করতে পারবেন না R। আপনি যদি জেড শেল ম্যানুয়ালটির সাথে পরামর্শ করেন তবে আপনি দেখতে পাবেন যে কী ম্যাপে history-incremental-search-backwardউইজেটের জন্য কেবল একটি মূল বাঁধাই রয়েছে emacs। Vi কীম্যাপসে এর জন্য কোনও কী বাইন্ডিং নেই।

তবে যেমন আপনি ম্যানুয়ালটি পড়েছেন (এটি অধ্যায় 18 from), কী বাইন্ডিং যুক্ত করা bindkeyকমান্ডটির ব্যবহারে মোটামুটি সহজ অনুশীলন :

bindkey "^R" history-incremental-search-backward

এমনকি zleশেল ফাংশনটিতে উইজেটটি মানচিত্র করতে আপনাকে কমান্ডটি ব্যবহার করতে হবে না , কারণ এটি একটি স্ট্যান্ডার্ড উইজেট।

আপনি যদি জেড শেল উইকিতে থাকা এই একই প্রশ্নের উত্তরের জন্য পরামর্শ নেন , আপনি বিশেষত এটি vi "কমান্ড" এবং "সন্নিবেশ মোড" কীম্যাপগুলিতে যুক্ত করার জন্য কমান্ডগুলি দেখতে পাবেন:

bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward

আরও মনে রাখবেন, গ্যারিজন জন যেমন উল্লেখ করেছেন , vi "কমান্ড" কীম্যাপে, /চরিত্রটি vi-history-search-backwardউইজেটের সাথে আবদ্ধ । এই উইজেট এবং উইজেটের মধ্যে পার্থক্য history-incremental-search-backwardহ'ল উইজেট আচরণ যা ইতিহাস অনুসন্ধান মোডে একবার প্রযোজ্য । এখানে কয়েকটি পার্থক্য যা আপনি লক্ষ্য করবেন:

  • ভিআই মোডগুলি স্যুইচ করা:
    • মধ্যে অনুসন্ধান মোডে history-incremental-search-backwardমধ্যে টগল mainএবং vicmdবোর্ডের ব্যবহার যখন আপনি ডাকা vi-cmd-modeথাকাকালীন এখনও অনুসন্ধান মোডে স্থিত উইজেট। থেকে অর্থাত emacsমোড presssing Escকী বা Ctrl+ + XCtrl+ + Vকী মধ্যে অনুসন্ধান মোডে টগল emacsএবং vicmdবোর্ডের ব্যবহার। (Invoking history-incremental-search-backwardথেকে vicmdকীম্যাপ যদি না আপনি বেঁধে কিছু, এইভাবে বিরক্তিজনক হয় vi-cmd-modeমধ্যে vicmdপাশাপাশি কীম্যাপ।)
    • অনুসন্ধান মোডটি উইজেটের vi-history-search-backwardসাথে একই আচরণ করে এবং অনুসন্ধানটি শেষ করবে, আপনি যে কমান্ড মোড থেকে সন্ধানটি প্রবেশ করেছিলেন তা পুনরায় প্রবেশ করবে। যেমন (ডিফল্ট বাইন্ডিং সহ) কমান্ড মোড থেকে অনুসন্ধান মোডে প্রবেশ করে এবং কমান্ড মোডে ফিরে যায়।vi-cmd-modeaccept-line/Esc
  • একটি অনুসন্ধান পুনরাবৃত্তি:
    • ইন history-incremental-search-backward, history-incremental-search-backwardএবং vi-rev-repeat-searchউইজেট উভয়ই স্বীকৃত। উদাহরণস্বরূপ (ধরে নেওয়া যায় যে আপনি বাইন্ডিংগুলি উপরের মতো পরিবর্তন করেছেন) উভয় Ctrl+ Rএবং Nপূর্ববর্তী মিলের লাইনটি অনুসন্ধান করবে।
    • ইন vi-history-search-backward, কেবলমাত্র vi-rev-repeat-searchউইজেট স্বীকৃত। উদাহরণস্বরূপ (ধরে নেওয়া যে আপনি উপরের মতো বাইন্ডিংগুলি পরিবর্তন করেছেন) Ctrl+ Rবীপের কারণ এবং এড়ানো হবে।

আমার পেশির স্মৃতি তোমাকে দোয়া করে!
নাথান লং

4

বাশের ভিআই মোডে, টাইপিং এর <Esc>/<string><Enter>জন্য কমান্ডের ইতিহাস অনুসন্ধান করবে <string>nইতিহাসে আরও ফিরে অনুসন্ধান করবে; Nএগিয়ে অনুসন্ধান করবে। zshell একই হতে পারে।


1
এটি আকর্ষণীয়, যদিও - আমি প্রায়শই ভিমে একটি চলাচল হিসাবে অনুসন্ধানটি ব্যবহার করি। আমার ধারণা আমি বর্তমানে যে কমান্ডটি সম্পাদনা করছি তার মধ্যে সরাতে এটি ব্যবহার করতে পারব না, যেহেতু এটি ইতিহাস অনুসন্ধানের জন্য পেগড, তাই না?
নাথান লং

ঠিক। তবে আপনি (কমপক্ষে ব্যাশে) এফ, এফ, টি, টি, 'ব্যবহার করতে পারেন; (সেমিকোলন), এবং ',' (কমা) কমান্ডগুলি লাইনের বিশেষ বর্ণগুলিতে এগিয়ে যেতে এবং ফিরে যেতে।
গ্যারিজোহন

1

আমি ব্যবহার করতে পছন্দ করি:

bindkey -M vicmd '/' history-incremental-search-backward

এইভাবে আমি ESC /textকমান্ড লাইনটি টাইপ করতে এবং দেখতে পারি । আমি যদি পরবর্তী ম্যাচটি করতে চাই তবে টাইপ করবESC n

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