আমি কীভাবে জেডএসএইচ-এর ভিআই-মোডে বিপরীত ইতিহাস অনুসন্ধান করব?


47

আমি vimমূলত আমার সমস্ত সম্পাদনা প্রয়োজনের জন্য ব্যবহার করি , তাই আমি আবারও আমার শেলটির জন্য ভিআই-মোড চেষ্টা করার সিদ্ধান্ত নিয়েছি (বর্তমানে ওএস এক্সে জেডএসএইচ ডাব্লু / ওহ-মাই-জেডএস), তবে আমি নিজেকে Ctrl-Rনিয়মিতভাবে ব্যবহার করার চেষ্টা করছি (এবং ব্যর্থ)) সমতুল্য কী-বাঁধাই কী? এবং ভবিষ্যতের রেফারেন্সের জন্য, আমি কীভাবে এটি নিজেকে খুঁজে বের করব? আমি নিশ্চিত যে আমি bind -Pব্যাশে ব্যবহার করতে পারি ।


2
'ম্যান zshzle' এর মতে, ইতিহাস-ইনক্রিমেন্টাল-অনুসন্ধান-পশ্চাদপসরণ ডিফল্টরূপে ভিআই মোডগুলিতে আবদ্ধ নয় (সংযুক্তি, viins)।
— পল

উত্তর:


56

bindkeyবিদ্যমান বাইন্ডিংগুলির একটি তালিকা পেতে আপনি কোনও যুক্তি ছাড়াই চলতে পারেন , যেমন:

# Enter vi mode
chopper:~> bindkey -v

# Search for history key bindings
chopper:~> bindkey | fgrep history
"^[OA" up-line-or-history
"^[OB" down-line-or-history
"^[[A" up-line-or-history
"^[[B" down-line-or-history

ইমাস মোডে আপনি যে বাঁধাই করতে চান তা হ'ল history-incremental-search-backwardতবে এটি ভিআই মোডে ডিফল্টরূপে আবদ্ধ নয়। নিজে সিটিআরএল-আর বেঁধে রাখতে, আপনি এই আদেশটি চালাতে পারেন, বা আপনার এটিতে যুক্ত করতে পারেন ~/.zshrc:

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

zshzleর manpage ( man zshzle) zsh এর লাইন সম্পাদক bindkey, এবং Emacs / চ মোড সম্পর্কে আরও তথ্যের হয়েছে।


3
ধন্যবাদ, বিশেষ করে এর জন্য zshzle। এটি বেশ তথ্যমূলক এবং দরকারী useful
— হ্যাঙ্ক গে

আমি তোমাকে ভালোবাসি. সিরিয়াসলি। ওএসএক্স এল ক্যাপিটনে আপগ্রেড করার পরে বিপরীত অনুসন্ধান চলে গিয়েছিল এবং আমি আমার দৈনন্দিন কাজের প্রবাহের সমস্ত কিছুর চেয়ে এটিকে মিস করেছি।
— খ্রিস্টান

24

এটি একটি প্রাচীন প্রশ্ন, তবে একমাত্র (এবং স্বীকৃত) উত্তরটি মূলত একজনকে বলে যে কীভাবে "ইমাস-সদৃশ" history-incremental-search-backwardভিআই মোডে স্থানান্তর করতে হয় । যদিও এটি পুরোপুরি করণীয় এবং আপনার পক্ষে সঠিক সমাধান হতে পারে, এটি কিছুটা আশ্চর্যের বিষয় যে কেউই ইতিহাস অনুসন্ধানের "দ্বিমূলক উপায়" উল্লেখ করেনি।

zsh এ vi মোড স্ট্যান্ডার্ড vi / vim কীগুলি ব্যবহার করে ইতিহাস অনুসন্ধান করে: /এবং ?উভয়ই কমান্ড মোডে উপলব্ধ available ( <Esc>Vi বা vim এর মতো সন্নিবেশ থেকে কমান্ড মোডে স্যুইচ করতে হিট করুন ))

তাদের বোধ বিপরীত হয়, যদিও: যেহেতু আপনি সাধারণত আপনার শেলের ইতিহাস বিপরীতে অনুসন্ধান করতে চান /তাই বিপরীত অনুসন্ধান করেন যেখানে ?একটি সামনের দিকে অনুসন্ধান করা হয়।

প্রথম হিট প্রদর্শিত হয়ে গেলে, আপনি nএকইভাবে আরও হিটগুলি সন্ধান করতে বা Nঅনুসন্ধানের দিকটি বিপরীত করতে (vi / vim এর মতোই) ব্যবহার করতে পারেন ।

কীম্যাপে প্রাসঙ্গিক ডিফল্ট কী-বাইন্ডিংগুলি হ'ল vicmd:

"/" vi-history-search-backward
"?" vi-history-search-forward
"n" vi-repeat-search
"N" vi-rev-repeat-search

2
এটি ব্যবহার করা "^P" history-beginning-search-backwardএবং "^N" history-beginning-search-forwardভিম-জাতীয় স্বতঃপূরণ জন্যও ভাল (আপনি টাইপ করা শুরু করেন, তারপরে টিপুন ctrl+pবা টিপুন ctrl+n)।
— সিআরপিএন

আমার জন্য, সামনে ?এনেছে bck-i-search, যা ঠিক আমি যা খুঁজছিলাম। ধন্যবাদ.
— geowa4

@wjv ইতিহাস-ইনক্রিমেন্টাল-সন্ধান-পিছিয়ে যাওয়ার সুবিধা হ'ল এটি গ্লোব নিদর্শনগুলিকে সমর্থন করে। ডিফল্ট /নাকি `? ' dont: coderwall.com/p/-jvcag/zsh-reverse-history-search-with-regex
— alpha_989

@ alpha_989 আপনার উল্লেখ করা ব্লগ পোস্টটি ভুল। এটি হতে পারে যে লেখকের কিছু zsh "ফ্রেমওয়ার্ক" ইনস্টল করা আছে যা কী- ^Rবাইন্ডিংকে ওভারলোড করে । একমাত্র "রেজেক্স-সদৃশ" অক্ষর উভয়ই সমর্থিত history-search-backwardএবং history-incremental-search-backwardতা হ'ল ^, লাইনের শুরুতে অনুসন্ধানের স্ট্রিংটিকে অ্যাঙ্কর করা। এর আসল শক্তি history-incremental-search-backwardহ'ল এটি একটি বর্ধিত অনুসন্ধান করে যা এর নাম অনুসারে সুপারিশ করে। আমি কল্পনা করতে পারি যে কেউ কেউ এ কারণে vicmdমূলম্যাপে আবদ্ধ করতে চান ।
— wjv

@wjv, আপনি ঠিক বলেছেন .. আমার লেখা উচিত ছিল history-incremental-pattern-search-backward, না history-incremental-search-backward। history-incremental-pattern-search-backwardsএকটি উইজেট হতে পারে .. তবে আমি মনে করি এটি zsh এ ডিফল্টরূপে ইনস্টল করা আছে। এটি globনিদর্শনগুলিকে সমর্থন করে regexযেমন আপনি সঠিকভাবে নির্দেশ করেছেন: zsh.sourceforge.net/Doc/Re कृपया / Expansion.html# গ্লোব- অপারেটর । পোস্টে আসলেই একটি ভুল আছে ..
— alpha_989
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.