ভিআইএম (বাশ বা টিমাক্স) এর মতো স্ক্রিনে শব্দগুলির সমাপ্তি


10

আমি কিভাবে সম্পন্ন করতে ব্যাশ, Zsh বা Tmux কনফিগার করতে পারেন পর্দায় গত ম্যাচিং শনাক্তকারী ? এই সাধারণ পরিস্থিতি বিবেচনা করুন:

$ git fetch
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 9 (delta 4), reused 0 (delta 0)
Unpacking objects: 100% (9/9), done.
From /opt/git/thunder
 * [new branch]      issue540   -> origin/issue547314
   e9204cf..4d42c3f  v2.1       -> origin/v2.1

আমি কীভাবে issue547সহজেই সিএলআইতে বাশ / জেডএস / টিএমাক্স সম্পূর্ণ করতে পারি? আমি যখন গিটকে সাহায্যের সাথে সম্পূর্ণরূপে শেষ করার Tabপরে $ git checkout isটিপছি issueতবে আমার নিজের দ্বারা অঙ্কগুলি সম্পূর্ণ করতে হবে কারণ পূর্ববর্তী সমস্ত অঙ্কগুলি বাস্তবে বিদ্যমান গিট শাখাগুলির সাথে মেলে

ভিআইএম-এ, সর্ব-অসম্পূর্ণ জন্য Ctrl+ Pটিপানো পূর্ববর্তী ম্যাচ হিসাবে সম্পূর্ণ হবে, সুতরাং এক্ষেত্রে issue547314বাস্তবে সম্পূর্ণ হবে। বাশে, জেডে বা টিমাক্সে আমি এই আচরণটি কীভাবে পেতে পারি ?

আমি বর্তমানে উবুন্টু সার্ভারে (সাধারণত 12.04 এলটিএস) বাশ 4.2 এবং টিএমক্স 1.10 ব্যবহার করছি। প্রয়োজনে আমি সর্বশেষ উবুন্টু সার্ভার এলটিএসে আপডেট করতে পারি (14.04)।

সম্পাদনা : যতক্ষণ না এটি ব্যবহার করা কঠিন না ততক্ষণ ব্যাশ, জেডএস, বা টিমাক্স ব্যবহার করা কোনও সমাধান আমি আপত্তি করব না। সুতরাং Tabবা Ctrl+ Pবা এই জাতীয় কিছু শর্টকাট ঠিক আছে, তবে Alt+ Meta+ Super+ Shift+ নয় א


খুব নিশ্চিত যে এটি বাশ উত্সের মোটামুটি বৃহত সংশোধন করবে।
কেভিন

@ কেভিন: আমি অনেকটা আবিষ্কার করেছি, তবে আশা করি হয় আশ্চর্যজনক জেডএস এটি পরিচালনা করতে পারে, বা সম্ভবত টমাক্স।
dotancohen

উত্তর:


4

আমি মনে করি যে ওপি যে বৈশিষ্ট্যটির সন্ধান করছে তাকে ইমাস্যাক্স বিশ্বে ডাবব্রেভ-প্রসারণ বলা হয় :

সেই সংক্ষিপ্তসার (ভ-প্রসারণ) দিয়ে শুরু হওয়া শব্দের জন্য বাফারে অনুসন্ধান করে গতিশীল সংক্ষেপ হিসাবে পয়েন্টের আগে বাফারে শব্দটি প্রসারিত করুন।

xtermএর dabbrev-expandবৈশিষ্ট্যও রয়েছে তবে এটি ইমাক্স অংশের তুলনায় কিছুটা কম স্মার্ট তবে এটি আমার পক্ষে খুব দরকারী এবং আমি যে কারণে স্যুইচ করেছি তার একটি ছিল xtermxtermউইন্ডোর অভ্যন্তরে প্রদত্ত স্ট্রিংয়ের ~/.Xresourcesজন্য অনুরোধ করতে dabbrev-expandএকটি নির্দিষ্ট কাস্টম কী-বাইন্ডিং ব্যবহার করতে পারে । উদাহরণস্বরূপ, আমার ~/.Xresources(আমার ব্যবহার uxterm, এক্সটারমের একটি ইউনিকোড সংস্করণ) নীচে প্রবেশ রয়েছে:

UXTerm*VT100.Translations: #override \n\
     Meta <Key>/:dabbrev-expand() \n\

xtermউইন্ডোর অভ্যন্তরে আমি অনুরোধ করতে M-/( ALT + /) ব্যবহার করতে পারি dabbrev-expandxtermআমি টাইপ করা অক্ষর দিয়ে শুরু হওয়া পর্দায় দৃশ্যমান সমস্ত স্ট্রিং সন্ধান করবে। উদাহরণ:

$ echo a_very_long_string bye by
$ a_v

আমি M-/এখন টিপুন যদি xtermপ্রসারিত a_vহবে a_very_long_string। দুর্ভাগ্যক্রমে, যেমনটা আমি বলেছিলাম xtermতেমন স্মার্ট নয় এবং এর dabbrev-expandবৈশিষ্ট্যটি কেবল পুরো স্ট্রিংয়ে কাজ করবে। সুতরাং, আপনার ক্ষেত্রে isপ্রসারিত হবে issue540এবং issue547314কারণ issue547314এটি একটি অংশ নয় origin/issue547314(এটি \bনিয়মিত এক্সপ্রেশন হিসাবে ভাবুন , এটি কিছুটা অনুরূপ তবে বেশিরভাগ নিয়মিত এক্সপ্রেশন ইঞ্জিনগুলি issueস্ট্রিংয়ের উভয় ঘটনাকেই ধরতে পারে \bissue.+\b)। তবে , আপনি টাইপ করে orপ্রেস করতে পারেন M-/xtermপ্রথমে প্রসারিত orহবে origin/v2.1, এটি আমরা M-/আবার চাপতে চাই না এবং xtermএটিতে প্রসারিত করব origin/issue547314। এখন, আপনি যদি ব্যাশ ব্যবহার করেন তবে আপনি করতে পারেন M-b,C-wএবং অংশ C-eঅপসারণ origin/। সংক্ষেপে বলতে গেলে, dabbrev-expandভিতরে xtermইম্যাক্সের মতো তেমন ভাল নয় (এবং ভিম আমার ধারণা) তবে এটি হাত দিয়ে লম্বা স্ট্রিংগুলি পুনরায় লেখার চেয়ে কম এবং টাইপো-প্রবণের চেয়েও দ্রুত। এবং বেশিরভাগ ক্ষেত্রে এটি অপ্রয়োজনীয় অংশগুলি সরানোর প্রয়োজন ছাড়াই পছন্দসই স্ট্রিংয়ে সরাসরি প্রসারিত হবে। আপনার কেবল এটির অভ্যস্ত হওয়া দরকার - আপনি যে স্ট্রিংটি কার্সারে রাখতে চান তা দেখুন এবং এটি অন্য কোনও কিছুর আগে নয় কিনা তা দেখুন এবং যদি এটি পূর্ববর্তী অংশটি টাইপ করে থাকে এবং প্রসারণের পরে এটি সরিয়ে ফেলুন।

নোটটি ডিফল্টরূপে বৈশিষ্ট্য xtermসহ সংকলিত নয় dabbrev-expandএবং আপনাকে এটি স্পষ্টভাবে সক্ষম করতে হবে। তবে xtermউবুন্টু সংগ্রহস্থলের সংস্করণটি সংকলিত dabbrev-expandএবং আপনি এখনই এটি ব্যবহার করতে পারেন।


আপনাকে ধন্যবাদ আরকাদিউস, আমার যা প্রয়োজন তা এটি যথেষ্ট কাছে বলে মনে হচ্ছে। নোট করুন যে আমি এটি কাজ করতে পারি না! সম্ভবত আমার xtermএবং uxtermডাবিব্রেভ-প্রসারণের জন্য সংকলিত নয়, আমি এতে বৈশিষ্ট্যের কোনও উল্লেখ পাইনি -help। আমি কীভাবে সংকলিত পতাকাগুলি দেখতে পাচ্ছি (এর সাথে vim --version)? নোট যে আমি এছাড়াও কনফিগ লাইন চেষ্টা ~/.Xresourcesহিসাবে Meta <KeyPress> /: dabbrev-expand() \n\ পাওয়া যায় এখানে কিন্তু যে সাহায্য করল না কেন, হয়।
ডটানকোহেন

এটি হতে পারে আপনার এক্সটার্ম ডাবব্রেভ-প্রসারণ ছাড়াই সংকলিত হয়েছে। আপনি এক্সটার্ম কীভাবে ইনস্টল করলেন? Xterm এ ~ / .Xres উত্স পরিবর্তন করার পরে xrdb -merge .Xresources
আরকাদিউস দ্রবকিজিক

এটি অবশ্যই করেছে, আরকাদিউস! ধন্যবাদ!
ডটানকোহেন

অনুগ্রহকালীন সময় শেষ না হওয়া পর্যন্ত আমি আরও কয়েক ঘন্টা প্রশ্নটি দিতে যাচ্ছি তবে আমি নিশ্চিত যে আপনি কোনও জুতো-ই are একমাত্র সমস্যা হল এক্সটার্মের প্রয়োজনীয়তা, যা ভয়ানক! তবে এখন যে বৈশিষ্ট্যটির সঠিক নামটি আমি জানি তা আমি অন্যান্য অ্যাপ্লিকেশনগুলির জন্য এটি গুগল করতে পারি । ধন্যবাদ!
ডটানকোহেন

ধন্যবাদ আরকাদিউস! যদিও আমি এক্সটার্ম সমাধানটি ব্যবহার করব না, আপনি অবশ্যই আমাকে সঠিক দিকে নির্দেশ করেছেন। পরিষ্কারভাবে zshএই সুবিধা আছে।
dotancohen

1

বাশকে অনুরূপ সুবিধা হিসাবে বাশ সম্পূর্ণকরণ বলে। আপনি Tabটাইপ করার সময় কমান্ডগুলিতে যুক্তি সরবরাহ করার সময় আপনি কীটি হিট করে এটি ব্যবহার করতে পারেন ।

উদাহরণ

যদি আমি টাইপ করে lsএবং তারপরে Tabদুবার আঘাত করে শুরু করি তবে আপনি বাশকে আপনি যে কমান্ডটি ব্যবহার করার চেষ্টা করছেন সেটির সাথে ম্যাচের ফাইলগুলির (এবং কমান্ড লাইন সুইচগুলি) একটি তালিকা সরবরাহ করতে পারবেন:

$ ls <---- hit Tab x 2
Display all 232 possibilities? (y or n)

এবং এখানে সুইচগুলির উদাহরণ রয়েছে:

$ ls -- <---- hit Tab x 2
--all                 --format=                                  --quote-name
--almost-all          --group-directories-first
....
....

সেটআপ?

আমার ইনস্টলেশন ইতিমধ্যে এর জন্য একটি বিধি অন্তর্ভুক্ত করেছে git:

/etc/bash_completion.d/git

আমি যখন gitপ্যাকেজটি ইনস্টল করেছি তখন এই ফাইলটি ইনস্টল করা হয়েছিল । আমি ফেডোরা 19-তে আছি, তবে অন্যান্য ডিস্ট্রোদেরও এটি করা উচিত।

$ rpm -qf /etc/bash_completion.d/git
git-1.8.3.1-1.fc19.x86_64

নিয়মের ফাইলটি দেখে এটি ব্যাখ্যা করে যে এটি নিম্নলিখিত পরিস্থিতিতে স্বয়ংক্রিয়ভাবে সমাপ্তির সুবিধার্থ করবে:

# The contained completion routines provide support for completing:
#
#    *) local and remote branch names
#    *) local and remote tag names
#    *) .git/remotes file names
#    *) git 'subcommands'
#    *) tree paths within 'ref:path/to/file' expressions
#    *) file paths within current working directory and index
#    *) common --long-options
#

সুতরাং এটি আপনার জন্য "কেবলমাত্র কাজ করা" উচিত।


2
বাশ সম্পূর্ণতা এবং গিট সমাপ্তির কাজ (যেমন আমি ওপিতে উল্লেখ করেছি)। আমি যে পরিবর্তনটি সম্পাদন করতে চাই তা হ'ল এটি প্রথম ট্যাবে সম্পূর্ণ হওয়া পর্দায় প্রদর্শিত সর্বশেষ আইনী মান টিপুন। ভিআইএম ওমনিকম্প্লেশন এইভাবে কাজ করে।
dotancohen

@ ডোটানকোহেন - আমি এখন দেখছি না যে আমি বর্ণনা করেছি তার থেকেও এটি সম্ভব হবে।
slm

1

এক্সট্রাক্টোর সাহায্যে আপনি এ জাতীয় কিছু করতে পারেন :

  • prefix + tabএক্সট্রাক্টো শুরু করতে tmux টিপুন
  • অস্পষ্ট পাঠ্য / পথ / url সন্ধান করুন find
  • প্রেস
    • tab এটি বর্তমান ফলকে toোকাতে,
    • enter ক্লিপবোর্ডে এটি অনুলিপি করতে,
    • ctrl-o পাথ / url খুলতে বা
    • ctrl-e সাথে সম্পাদনা করতে $EDITOR
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.