লাইনে ইতিমধ্যে যা আছে তা সম্পূর্ণ করতে আমি বাশ ইতিহাসের সম্পূর্ণতা কীভাবে পরিবর্তন করব?


133

আমি কয়েক মাস আগে একটি কমান্ড পেয়েছি যা আমার বাশ ইতিহাসকে উপরের তীর টিপে টিপানোর সময় লাইনে ইতিমধ্যে কী ঘটছে তা স্বয়ংক্রিয়ভাবে পূর্ণ করে তুলেছে:

$ vim fi

প্রেস

$ vim file.py

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

কেউ কি আদেশ জানে?

উত্তর:


222

সম্ভবত কিছু

# ~ / .inputrc
"\ ই [এ": ইতিহাস-অনুসন্ধান-পিছনে
"\ ই [বি": ইতিহাস-অনুসন্ধান-ফরোয়ার্ড

বা সমতুল্য,

# ~ / .bashrc
যদি [[$ - == * আমি *]]
তারপর
    বাইন্ড '"\ ই [এ": ইতিহাস-অনুসন্ধান-পিছনে'
    বাইন্ড '"\ ই [বি": ইতিহাস-অনুসন্ধান-ফরওয়ার্ড'
ফাই

(যদি বিবৃতি ইন্টারেক্টিভ মোডের জন্য পরীক্ষা করে থাকে)

সাধারণত, উপর এবং নীচের Readline ফাংশন আবদ্ধ হয় previous-historyএবং next-historyযথাক্রমে। আমি আপ / ডাউনের সাধারণ ক্রিয়াকলাপটি স্থানচ্যুত না করে এই ফাংশনগুলিতে PgUp / PgDn কে আবদ্ধ করতে পছন্দ করি।

# ~ / .inputrc
"\ ই [5 ~": ইতিহাস-অনুসন্ধান-পিছনে
"\ ই [6 ~": ইতিহাস-অনুসন্ধান-ফরোয়ার্ড

আপনি সংশোধন করার পরে ~/.inputrc, আপনার শেলটি পুনরায় চালু করুন বা পুনরায় পড়তে বলার জন্য Ctrl+ X, Ctrl+ ব্যবহার করুন ।R~/.inputrc


যাইহোক, আপনি যদি প্রাসঙ্গিক ডকুমেন্টেশন সন্ধান করছেন:

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


আপনার উত্তরের জন্য ধন্যবাদ. এটি পরিচিত শোনায়, তবে দুর্ভাগ্যক্রমে আমার পক্ষে কাজ করে না। এটিকে .inputrc এ রাখলে কিছুই পরিবর্তন হয় না এবং এটি puttingুকিয়ে দেয় ash কোন ধারনা?
ব্লককি

কিছু মনে করো না. ইতিহাস-সম্পূর্ণ- * বিদ্যমান নেই; কেবল ইতিহাস-অনুসন্ধান- * ফাংশন বিদ্যমান। ধন্যবাদ!
ব্লককি

আহ, আমি সেখানে প্রথম দুটি উদাহরণ পরিষ্কারভাবে লিখেছি ... যদিও শেষটি সঠিক ছিল correct আমি এটা ঠিক করব।
প্রথম

@ ব্যবহারকারী 1037114: এটি এটি নিজেই একটি প্রশ্ন, আপনার নিজের পোস্টে এটি জিজ্ঞাসা করা উচিত।
কামারাডক্লিমবার

এটি আমার জন্য বাশে vi মোড ব্যবহার করে উপরের / নীচের তীরগুলি ঠিক করেছে। দ্রষ্টব্য, এটি কাজ করার জন্য আমাকে "Esc" (কমান্ড মোড) টি চাপতে হবে।
ক্রিস

5

নিম্নলিখিত .inputrc আপডেট করুন:

"\C-[OA": history-search-backward
"\C-[[A": history-search-backward

"\C-[OB": history-search-forward
"\C-[[B": history-search-forward

4
এই কীগুলি কী?
ক্রিস

এই কীগুলি বিশেষত কী তা আমি জানি না, তবে এক্স 11-এ tmux এবং st টার্মিনাল ব্যবহার করার সময় উপরে এবং ডাউন কীগুলি ইতিহাস অনুসন্ধান না করলে এই উত্তরটি আমার পক্ষে এই কার্যকারিতাটি স্থির করে।
রাজ্জিনটাউন

1
@razzintown St জন্য আপনাকে সম্ভবত set enable-keypad onজন্য delসঠিকভাবে কাজ করার জন্য কী ( FAQ )। যখন কীপ্যাডে থাকে তীর কীগুলি হয় "\C-[OA"এবং "\C-[OB"( "\C-[OC"এবং "\C-[OD")। এটি পরিষ্কার করার জন্য আমি একটি উত্তর পোস্ট করেছি।
MauricioRobayo

@ ক্রিস এগুলি হ'ল কিপ্যাড মোড আপ এবং ডাউন এ্যারো কীগুলি এবং এএনএসআই মোড আপ এবং ডাউন এ্যারো কীগুলি। আমার উত্তর নম্র দেখুন।
MauricioRobayo

3

যদি set enable-keypad onআপনার ~/.inputrcকিছু স্ট্যান্ডের ( suckless সহজ টার্মিনাল ) ব্যবহারকারী হিসাবে থাকতে পারে তবে সচেতন হন যে তীর কীগুলি কীপ্যাড মোডে রয়েছে। উবুন্টু জাহাজগুলি এই দরকারী সহ /usr/share/doc/bash/inputrc.arrows:

# This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library.
#
# Arrow keys in keypad mode
#
"\C-[OD"        backward-char
"\C-[OC"        forward-char
"\C-[OA"        previous-history
"\C-[OB"        next-history
#
# Arrow keys in ANSI mode
#
"\C-[[D"        backward-char
"\C-[[C"        forward-char
"\C-[[A"        previous-history
"\C-[[B"        next-history
#
# Arrow keys in 8 bit keypad mode
#
"\C-M-OD"       backward-char
"\C-M-OC"       forward-char
"\C-M-OA"       previous-history
"\C-M-OB"       next-history
#
# Arrow keys in 8 bit ANSI mode
#
"\C-M-[D"       backward-char
"\C-M-[C"       forward-char
"\C-M-[A"       previous-history
"\C-M-[B"       next-history

সুতরাং আমি নিশ্চিত নই যে আপনার সকলের প্রয়োজন আছে কিনা তবে এটি আপনার মধ্যে থাকতে পারে না ~/.inputrc:

# Arrow keys in keypad mode
"\C-[OA": history-search-backward
"\C-[OB": history-search-forward
"\C-[OC": forward-char
"\C-[OD": backward-char

# Arrow keys in ANSI mode
"\C-[[A": history-search-backward
"\C-[[B": history-search-forward
"\C-[[C": forward-char
"\C-[[D": backward-char

এটি একই বিষয়ে: আমার কার্সার কীগুলি কাজ করে না এবং এই এক্সটারেম: বিশেষ কীগুলিও


1

Ohmyzsh সহ, এটি আপনার .zshrc এ ব্যবহার করুন :

bindkey '^[OA' history-search-backward
bindkey '^[OB' history-search-forward

পুনরায় লোড করতে, source ~/.zshrcবা টার্মিনাল পুনরায় চালু করতে ।

সূত্র: https://superuser.com/a/418299/71680


Zsh এ আমার জন্য যা কাজ করেছিল তা সোর্স লিঙ্কে দেওয়া বিকল্পটি ছিল: বিন্দকি '\ ই [একটি' ইতিহাস-অনুসন্ধান-পশ্চাদপট বিন্দকি '\ ই [বি' ইতিহাস-অনুসন্ধান-ফরোয়ার্ড
মাইকেল মাসি

-3

আপনার বাশ সম্পূর্ণকরণ সক্ষম করতে হবে।

চেক

  • /etc/profile
  • /etc/bash.bashrc
  • ~/.bashrc

উপরের ফাইলগুলির কোনও উত্স কিনা তা দেখতে /etc/bash_completion। অর্থাত

। জন্য / etc / bash_completion

যদি /etc/bash___completionউপরের যে কোনও ফাইল দ্বারা উত্সাহিত না হয় তবে আপনাকে এগুলির মধ্যে একটিতে এটি যুক্ত করতে হবে।

আপনি যদি চান যে আপনার মেশিনে থাকা সমস্ত ব্যাশ ব্যবহারকারীদের ব্যাশ সমাপ্তি হয়, উত্স /etc/bash_completionথেকে /etc/bash.bashrc

যদি এটি কেবল আপনি যিনি বাশ সম্পূর্ণ করতে চান তবে /etc/bash_completionআপনার থেকে উত্স ~/.bashrc


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