Zsh শেলের জন্য কি কি একটি ঝাপসা মিল আছে?


22

আমি সম্প্রতি দক্ষ পাঠ্য সমাপ্তি সিস্টেমের প্রেমে পড়েছি। আমার প্রিয় ধরণের একটি সম্পূর্ণরূপে তথাকথিত ফাজি সমাপ্তি। এটি এমন একটি মোড যেখানে ফাইলের নাম বা পথে 'কোথাও' (প্রায়) উপস্থিত হতে পারে এমন কয়েকটি অক্ষরের উপর ভিত্তি করে প্রোগ্রামটি ব্যবহারকারীর ইনপুট সম্পূর্ণ করবে। এই বৈশিষ্ট্যটি অন্তত এই প্রোগ্রামগুলির জন্য বিদ্যমান:

একটি পাঠ্য সম্পাদক এ এই মোডের ব্যবহারের উদাহরণ:

ব্যবহারকারী দীর্ঘ শব্দটি ওয়ার্ডনেমথ্যাটটিডাউনডওয়্যান্টটোয়ারাইটবাইহ্যান্ড শব্দটি সম্পূর্ণ করার চেষ্টা করছেন এবং তারা প্রথম অক্ষর এবং কিছু মূলধনের কেস লেটার টাইপ করে এটি করতে পারেন। সুতরাং lwnt টাইপিং পুরো শব্দটি সম্পূর্ণ করতে পারে।

আমার প্রশ্ন: আমি কি zsh শেল ব্যবহার করতে পারে এমন একটি মোড বা অনুরূপ কিছু আছে?

উত্তর:


27

আমার এই আছে .zshrc

# 0 -- vanilla completion (abc => abc)
# 1 -- smart case completion (abc => Abc)
# 2 -- word flex completion (abc => A-big-Car)
# 3 -- full flex completion (abc => ABraCadabra)
zstyle ':completion:*' matcher-list '' \
  'm:{a-z\-}={A-Z\_}' \
  'r:[^[:alpha:]]||[[:alpha:]]=** r:|=* m:{a-z\-}={A-Z\_}' \
  'r:|?=** m:{a-z\-}={A-Z\_}'

এটি সম্পূর্ণরূপে zshইঞ্জিনের সাথে পুরো अस्पष्ट ম্যাচ যুক্ত করে । এটিতে উত্সাহ পাঠের সুপার স্মার্টস অভাব রয়েছে, তবে, হ্যাঁ, এটি সম্পূর্ণ হবে lwnt -> longWordNameThatTheyDontWantToWriteByHand


1
আমি সবেমাত্র একটি ত্রুটি পেয়েছি: স্পেসের সাথে ফাইলের নামের জন্য কাজ করে না, স্থানের পরে আপনি যে কোনও কিছু টাইপ করছেন given অর্থাৎ stack install && vlc ~/Music/erfসম্পূর্ণ হয় না stack install && vlc ~/Music/FGFC820\ -\ Perfect\ War.mp3
হাই-এঞ্জেল

5
@ হাই-অ্যাঞ্জেল ওহে, এটিকে ধাক্কা দেওয়ার জন্য ধন্যবাদ। আমি আসলে 'r:|?=** m:{a-z\-}={A-Z\_}'এখন ব্যবহার করি , যা একগুচ্ছ সহজ, এবং আপনি যে সমস্যাটি বর্ণনা করেছেন তাতে ভোগেন না।
পাইথননট

দারুণ! আপনি এই কোডটি দিয়ে একটি প্লাগইন তৈরি করতে পারেন। কেবল এটি সন্ধান করা সহজ।
জুলিয়ান__

15

আমার প্রকল্প fzf দেখুন

এটি গোলংয়ে লিখিত একটি সাধারণ উদ্দেশ্যমূলক अस्पष्ट ফাইন্ডার যা কোনও জিনিসের তালিকার সাথে ব্যবহার করা যেতে পারে: ফাইল, প্রক্রিয়া, কমান্ডের ইতিহাস, গিট শাখা ইত্যাদি

Zsh এর জন্য এটি নিম্নলিখিত কী বাইন্ডিং সরবরাহ করে:

  • CTRL-T - নির্বাচিত ফাইল পাথ (গুলি) কমান্ড লাইনে আটকান
  • CTRL-R - ইতিহাস থেকে নির্বাচিত কমান্ডটি কমান্ড লাইনে আটকান
  • ALT-C - নির্বাচিত ডিরেক্টরিতে সিডি করুন

এবং अस्पष्ट সমাপ্তি মোড:

# Files under current directory
# - You can select multiple items with TAB key
vim **<TAB>

# Files under parent directory
vim ../**<TAB>

# Files under parent directory that match `fzf`
vim ../fzf**<TAB>

# Files under your home directory
vim ~/**<TAB>

# Directories under current directory (single-selection)
cd **<TAB>

# Directories under ~/github that match `fzf`
cd ~/github/fzf**<TAB>

# Process IDs. Can select multiple processes with TAB or Shift-TAB
kill -9 <TAB>

# Host names
ssh **<TAB>
telnet **<TAB>

# Environment variables / aliases
unset **<TAB>
export **<TAB>
unalias **<TAB>

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