Zsh এর প্রম্পটে ইতিমধ্যে প্রবেশ করা পাঠ্য সহ আমি কীভাবে ইতিহাস অনুসন্ধান করতে পারি?


58

Zsh এ, আমি জানি যে আমি Ctrl+ এর সাথে ইতিহাস অনুসন্ধান করতে পারি r। যাইহোক, প্রায়শই আমি প্রম্পটে সরাসরি একটি কমান্ড লিখতে শুরু করি তবে তারপরে বুঝতে পারি আমার ইতিহাস অনুসন্ধান করা উচিত। আমি যখন আঘাত Ctrl+ + r, এটা বজায় এনেছে এই মত একটি ফাঁকা ইতিহাস অনুসন্ধান প্রম্পট:

ইতিহাস অনুসন্ধানের প্রম্পট প্রাক-ভরাট নয়

আমার প্রম্পটে কীভাবে পাঠ্য রয়েছে তা লক্ষ্য করুন তবে ইতিহাস অনুসন্ধানের প্রম্পটে নয়। ইতিমধ্যে প্রম্পটে থাকা পাঠ্যটির সাথে আমি কীভাবে ইতিহাস অনুসন্ধান শুরু করব, তাই এটি দেখতে এরকম দেখাচ্ছে:

ইতিহাস অনুসন্ধান প্রম্পট প্রাক ভরাট

উত্তর:


44

আপনি zle এরhistory-search কার্যকারিতা ব্যবহার করতে পারেন :

bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward

প্রম্পটে ইতিমধ্যে প্রবেশ করা হয়েছে তার উপর ভিত্তি করে এই ইতিহাস সন্ধান, পিছন এবং সামনের দিকে আবদ্ধ Upএবং Down(আপনার নিজের পালানোর ক্রমগুলির জন্য সামঞ্জস্য)।

সুতরাং, আপনি যদি "vim" লিখতে এবং হিট Upকরতে চান তবে zsh কেবল "vim" এর সাথে শুরু হওয়া সেই কমান্ডগুলির জন্য আপনার ইতিহাসের পিছনে চলে যাবে।

ইতিহাসের সন্ধান-শেষ ফাংশনটি (সাধারণত অবস্থিত /usr/share/zsh/functions/Zle/) ব্যবহার করে এবং -endপ্রতিটি লাইনের শেষে যুক্ত করে, আপনি zsh এর ইতিহাস থেকে আপনার পছন্দসই কমান্ডটি নির্বাচিত করার পরে লাইনের শেষে কার্সারটি স্থাপন করতে পারেন :

autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^[[A" history-beginning-search-backward-end
bindkey "^[[B" history-beginning-search-forward-end

দুর্দান্ত, আপনাকে ধন্যবাদ। যদিও উভয় বিন্দকি কমান্ডের জন্য তাদের কাজ করার জন্য আমাকে "-end" সরাতে হয়েছিল। আমি আপনার উত্তরটি সম্পাদনা করি নি কারণ সম্ভবত কিছু পরিস্থিতি রয়েছে যা প্রয়োজনীয়?
শন ম্যাকসি

কোনও সমস্যা নেই: আপনি যে বিশদটি স্পষ্ট করতে চেয়েছিলেন সেটির সাথে উত্তরটি আপডেট করেছেন।
জেসনওয়ারিয়ান

2015 সালের নভেম্বরের শেষের দিকে এটি আমার পক্ষে কাজ করত যখন আমি ও আমার zsh এর সর্বশেষ সংস্করণে আপগ্রেড করেছিলাম। কোন ধারনা? পরামর্শ? অন্য কেউ এই দেখছেন? ডিবাগ কিভাবে?
হানি

2
@ অ্যানিলেবেড ওহ-মাই-জেডএস একটি ক্লাস্টারফেস্ক; আমি ইতিহাসের অনুসন্ধানের মতো মৌলিক কিছু ভেঙে ফেলতে মোটেও অবাক হই না ...
জেসনওয়ারিয়ান

1
খালি ইতিহাস অনুসন্ধান থেকে কার্সারটির শেষ দিকে ঝাঁপ দেওয়ার কোনও উপায় আছে তবে আংশিক অনুসন্ধানের জন্য একই অবস্থান থাকা উচিত? বর্তমানে বাশের ক্ষেত্রে এটিই ঘটে।
সিএমসিডিগ্রাগনকাই

19

আর একটি দরকারী বিকল্প হ'ল history | grep

একটি উপাধি বরাদ্দ করুন, যেমন

alias hg='history | grep'

তারপরে আপনি যে hg whateverআদেশগুলি ব্যবহার করেছেন তা সন্ধান করতে টাইপ করতে পারেন , যেমন eg

$ hg chmod                                                                                                       
 1309  chmod +x rotate_files.sh 
 1385  chmod +x rotate_files_270.sh 
 1512  chmod +x testy.sh 
 1528  chmod +x act_on_2_numbers.sh 
 2142  chmod +x ~/bin/display_tmux_pane_pwd.sh
 4532  chmod +x cat_files.rb 

আমি আমার ডট ফাইলগুলিতে এই ওরফে রেখেছি।


17
hgআমাকে কী মনে করিয়ে দেয় ... ওহ হ্যাঁ, মুরুরিয়াল!

12

আপনি ব্যবহার করে থাকেন উহু-মাই-zsh , অ্যাড history-substring-searchকরার plugins=(...)লাইন।

তারপর যোগ

bindkey "^[[A" history-substring-search-up
bindkey "^[[B" history-substring-search-down

কোথাও পড়ার লাইনের নিচে source $ZSH/oh-my-zsh.sh। একটি নতুন টার্মিনাল সংরক্ষণ করুন এবং ফায়ার আপ করুন বা source ~/.zshrcবর্তমান টার্মিনালে চালিত করুন ।

দ্রষ্টব্য: ^[[A আমি যে টার্মিনালটি ব্যবহার করি (কিটি) এবং আরও অনেকের উপরে আপ তীর জন্য পালানোর ক্রম। আপনার পছন্দসই টার্মিনালটি পরীক্ষা করতে, টাইপ করুন showkey -aএবং তারপরে সেগুলি কী টিপুন যা আপনি পালানোর ক্রমটি সন্ধান করতে চান।


এই কী-ম্যাপিংটি কী করে তা স্পষ্ট নয়, উপরের উত্তরটি ব্যাখ্যা করে "এটি প্রম্পটে ইতিমধ্যে প্রবেশ করা হয়েছে তার উপর ভিত্তি করে একটি ইতিহাস অনুসন্ধান, পিছন এবং সামনের দিকে আপ এবং ডাউন (আপনার নিজের পালানোর ক্রমগুলির জন্য সামঞ্জস্য করে) আবদ্ধ করে" "
কলিন ডি

@ কলিনডি স্পষ্ট করতে একটি নোট যুক্ত করেছে
joelostblom

1
সাবস্ট্রিং অনুসন্ধান সেরা, এটি কমান্ডের সুপারস্টেট দিয়ে শুরু হয়। আমি যেহেতু ওহ-মাই-জেডএস ব্যবহারকারী না হয়ে তা বাস্তবায়নের brew install zsh-history-substring-searchজন্য নির্দেশিকাগুলির জন্য রেপো রেডমে পরীক্ষা করেছিলাম, আমি কেবল এগিয়ে গিয়ে একটি উত্তর তৈরি করব যার ফলে আমি সত্যই খুশি।
মেরিলিন

7

আপনি স্ক্রিপ্টটি https://github.com/zsh-users/zsh-history-substring-search এ ব্যবহার করতে চাইতে পারেন

যেখানে আপনি আগের প্রবেশকৃত যে কোনও কমান্ডের যে কোনও অংশে টাইপ করতে পারেন Upএবং Downম্যাচিং কমান্ডগুলির মাধ্যমে চক্রের জন্য এবং কীগুলি টিপুন ।


4

আমি হার্ড কোডযুক্ত স্টাফগুলি ব্যবহার "$terminfo[kcuu1]"বা এর "$key[Up]"চেয়ে বেশি সুপারিশ করব "^[[A"যা কোনও নির্দিষ্ট সিস্টেমে কাজ করতে পারে বা নাও পারে।

পরীক্ষা করে দেখুন /etc/zsh/zshrcআরো কী জন্য। এটি আমার সিস্টেমে দেখতে কেমন লাগে তা এখানে। আমি মনে করি terminfoকীগুলি সংজ্ঞায়িত হওয়ার বেশি সম্ভাবনা রয়েছে।

key=(
    BackSpace  "${terminfo[kbs]}"
    Home       "${terminfo[khome]}"
    End        "${terminfo[kend]}"
    Insert     "${terminfo[kich1]}"
    Delete     "${terminfo[kdch1]}"
    Up         "${terminfo[kcuu1]}"
    Down       "${terminfo[kcud1]}"
    Left       "${terminfo[kcub1]}"
    Right      "${terminfo[kcuf1]}"
    PageUp     "${terminfo[kpp]}"
    PageDown   "${terminfo[knp]}"
)

4

ব্যবহার সম্পর্কে কি zsh-autosuggestions?

বিষয়টি হ'ল, প্রতিটি কমান্ডের জন্য আপনি এই প্লাগইনটি টাইপ করলে আপনাকে এমন কিছু পরামর্শ দেখাবে যা গ্রহণযোগ্য বা নাও হতে পারে। এটি ব্যবহার করে দেখুন এবং আমাদের কিছু প্রতিক্রিয়া জানান।

কোনও প্লাগইন না দিয়ে আমরা Ctrlrইতিহাসের বিপরীত সিচ সম্পাদন করতে টিপতে পারি , আপনি ম্যাচ করা কমান্ডগুলি টাইপ করা শুরু করার সাথে সাথে পরামর্শ হিসাবে উপস্থিত হবে।


2

আমি ভাই -মোড প্লাগইন ব্যবহার করি । এবং তারপরে আমার ~ / .zshrc এ আমার কাছে নিম্নলিখিত বাইন্ডিংগুলি রয়েছে:

bindkey "^P" history-beginning-search-backward
bindkey "^N" history-beginning-search-forward

এটা আমার ব্যবহার করতে সক্ষম ^Pএবং ^Nস্বাভাবিক পিছিয়ে থাকা এবং এগিয়ে অনুসন্ধান যেন আমি কোনো টেক্সট প্রবেশ করো না, এবং ফিল্টার করা অনুসন্ধান যদি আমি না।


1

আমি শেফলোর সাথে একমত যে "সাবস্ট্রিং" অনুসন্ধান আরও কার্যকর। আমি সেখানে মন্তব্য করতে পারি না তাই আমি একটি নতুন উত্তর শুরু করলাম। আমি ওহ-মাই-জেডএস ব্যবহার করি এবং history / .zshrc এর প্লাগইন = (...) এ "ইতিহাস-সাবস্ট্রিং-অনুসন্ধান" যুক্ত করি। তারপরে উত্স ~ / .zshrc। আরও কিছু যুক্ত করার দরকার নেই। যাচাই করতে "বাইন্ডকি" ব্যবহার করুন:

"^ [OA" ইতিহাস-সাবস্ট্রিং-অনুসন্ধান-আপ
"^ [OB" ইতিহাস-সাবস্ট্রিং-অনুসন্ধান-ডাউন

পরে, আপনি "থেকে" এবং উপরে তীর টাইপ করুন, "ইতিহাস" উপস্থিত হবে এবং "থেকে" হাইলাইট হবে (আপনি যদি "ইতিহাস" কমান্ড আগে ব্যবহার করেছিলেন)।


1

এর পরিবর্তে আপনি জাবা ব্যবহার করতে পারেন , যা আপনার অনুসন্ধানকে আরও ভাল মাল্টি কীওয়ার্ড সুপার সন্ধানের সাথে পুরোপুরি প্রতিস্থাপন করে এবং আপনার সমস্যাটিও ঠিক করে দেয় - জাভা অনুসন্ধান করতে পারে এমন জিনিসগুলির মধ্যে অনুসন্ধানের ইতিহাস one

ছোট ভূমিকা / আলোচনা এখানে


0

যেহেতু আমি ওহ-মাই-জেডএস ব্যবহার করি এবং আমি জয়েলস্টব্লম, জেমস থেকে সাবস্ট্রিং দ্রবণটি ব্যবহার করি, আমি এইভাবে .zshrc সংশোধন করি: (যা 13 লাইনে "লাইনটি" উত্স $ জেডএসএইচ / oh-my-zsh.sh "সন্ধান করুন) তারপরে তার চারপাশে কোডটি সংশোধন করুন))

plugins=(
  git
  history-substring-search
)

source $ZSH/oh-my-zsh.sh

bindkey -v
bindkey "^[[A" history-substring-search-up
bindkey "^[[B" history-substring-search-down

bindkey -vctrl-a, ctrl-e ভাঙ্গবে। সম্ভবত সমস্ত সিটিআরএল কমান্ড।
মাইকেল ওজেরিয়ানস্কি

0

অ-ওহ-মাই-জশ উত্তর

এটি আপ / ডাউন তীরের মাধ্যমে সাবস্ট্রিং ইতিহাস সহজে অ্যাক্সেসযোগ্য পাওয়ার জন্য (ম্যাকোজে) আমার পক্ষে কাজ করেছে। কী বাঁধাই আপনার উপর নির্ভর করে।

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

Zsh- ব্যবহারকারী / zsh-ইতিহাস-সাবস্ট্রিং-অনুসন্ধানে নির্দেশাবলী থেকে শুরু করা

brew install zsh-history-substring-search

# add the following to .zshrc
source /usr/local/share/zsh-history-substring-search/zsh-history-substring-search.zsh
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down

এখন এটি পুরোপুরি উপভোগ করুন।

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