আমি নিশ্চিত না যে আপনি এটি যা খুঁজছেন, তবে সম্ভবত আপনি fzf এবং fzf.vim চেষ্টা করতে পারেন ।
আপনি যদি প্লাগইন ম্যানেজার হিসাবে ভিএম-প্লাগ ব্যবহার করেন তবে এগুলি ইনস্টল করার জন্য আপনাকে যা করতে হবে তা হ'ল আপনার এই লাইনগুলি যুক্ত করা vimrc:
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
... রেখার মাঝে কোথাও:
call plug#begin('~/.vim/plugged')
এবং:
call plug#end()
তারপরে মৃত্যুদণ্ড কার্যকর করুন :PlugInstall।
সরবরাহিত বিভিন্ন কমান্ড এবং ম্যাপিংগুলির মধ্যে fzf.vim(যার একমাত্র উদ্দেশ্য ম্যাপিংস এবং কমান্ডগুলি fzfপূর্বনির্ধারিত উত্সগুলির মধ্যে ফাজি অনুসন্ধানের জন্য জিজ্ঞাসা করা ইনস্টল করা মনে হয় ) এর মধ্যে একটি কমান্ড রয়েছে :Ag।
এটি ব্যবহার করতে সক্ষম হতে আপনাকে শেল কমান্ড এজি ইনস্টল করতে হবে । ডিবিয়ান ভিত্তিক বিতরণগুলিতে, নিম্নলিখিত কমান্ড দিয়ে এটি করা যেতে পারে:
apt-get install silversearcher-ag
গিথুবের প্রকল্পটি এটি MacOS এ কীভাবে ইনস্টল করবেন তা ব্যাখ্যা করে:
brew install the_silver_searcher
:Agচারপাশে একটি মোড়ক $ ag, এবং আপনাকে বর্তমান ডিরেক্টরি (আপনার টাইপ করার সময় প্রদর্শিত হবে :pwd) এর ফাইলগুলিতে অস্পষ্ট অনুসন্ধান করার অনুমতি দেয় । ম্যাচগুলি প্রতিটি কীস্ট্রোকের পরে আপডেট হয়।
আপনি পারেন:
- চক্র ফরোয়ার্ড এবং অনগ্রসর সঙ্গে মিল মাধ্যমে
C-nএবংC-p
- বর্তমান ম্যাচ এবং পরবর্তী / পূর্ববর্তী এক পদক্ষেপ নির্বাচন
Tab/S-Tab
- নির্বাচন করুন অথবা সঙ্গে সব ম্যাচ অনির্বাচন
M-aবাM-d
আপনি যদি এক বা একাধিক ম্যাচ বাছাই করেন, এন্টার চাপার পরে, তারা কুইকফিক্স তালিকাটি তৈরি করবে। সেখান থেকে আপনি তাদের মাধ্যমে ডিফল্ট ভিম কমান্ড / ম্যাপিংস, যেমন :cnextএবং এর মাধ্যমে নেভিগেট করতে সক্ষম হবেন :cprevious।

আপনি যদি ইনস্টল করা সমস্ত কমান্ডে একটি উপসর্গ যুক্ত করতে চান fzf.vimএবং বিদ্যমান কমান্ডগুলিকে ওভাররাইড করা এড়াতে চান তবে আপনি এটিতে যুক্ত করতে পারেন vimrc:
let g:fzf_command_prefix = 'your_prefix'
আমি ব্যবহার Fzfএকটি উপসর্গ হিসাবে, এটা কেন আমি টাইপ হয়নি :Agকিন্তু :FzfAg।
আপনি যদি এর git grepপরিবর্তে ব্যবহার করতে পছন্দ করেন agতবে মনে হয় আপনি এটির মতো আপনার নিজের কাস্টম র্যাপারটি ইনস্টল করতে পারেন :GGrep:
command! -bang -nargs=* GGrep
\ call fzf#vim#grep('git grep --line-number '.shellescape(<q-args>), 0, <bang>0)
এটি ব্যাখ্যা করা হয়েছে :h fzf-vim-customization।
এছাড়াও, যদি fzftmux একটি ফলকে খোলে, এবং আপনি এটি সম্পূর্ণ স্ক্রীনটি পরিবর্তে লাগে পছন্দ করেন, আপনি সমস্ত কমান্ড করার জন্য একটি ঠুং সংযুক্ত করতে পারবেন ( :Ag!, :GGrep!, ...)।
আপনি যেমনটি আপনার শেষ মন্তব্যে বলেছিলেন , ডিফল্টরূপে fzfআপনার শেলের কনফিগারেশন পরিবর্তন করে। উদাহরণস্বরূপ, আপনি যদি bashএটি ব্যবহার করেন তবে এটি আপনার নীচের লাইনটি যুক্ত করবে ~/.bashrc:
[ -f ~/.fzf.bash ] && source ~/.fzf.bash
এটি ফাইলটি উত্স করবে ~/.fzf.bash। পরবর্তীটিতে কিছু কোড রয়েছে:
# Setup fzf
# ---------
if [[ ! "$PATH" == */home/user/.fzf/bin* ]]; then
export PATH="$PATH:/home/user/.fzf/bin"
fi
# Auto-completion
# ---------------
[[ $- == *i* ]] && source "/home/user/.fzf/shell/completion.bash" 2> /dev/null
# Key bindings
# ------------
source "/home/user/.fzf/shell/key-bindings.bash"
এই কোড এনভায়রনমেন্ট ভেরিয়েবল অবশ্যই এমন একটি পথ appends $PATH: /home/user/.fzf/bin; যা fzfপ্রোগ্রামযুক্ত ফোল্ডারটি ।
এটি অন্যান্য 2 টি ফাইলও উত্স করে:
/home/user/.fzf/shell/completion.bash
/home/user/.fzf/shell/key-bindings.bash
প্রথমটি সম্পূর্ণরূপে ফাংশনগুলি সংজ্ঞায়িত করে বলে মনে হয়, দ্বিতীয়টি কী বাইন্ডিংগুলি ইনস্টল করে।
দুর্ভাগ্যক্রমে, মূল বাইন্ডিংগুলি ডিফল্ট readlineফাংশনগুলিকে ওভাররাইড করতে পারে ।
উদাহরণস্বরূপ, fzfফাংশন binds fzf-file-widgetকরতে C-t। এই কীটি সাধারণত transpose-charsফাংশনটি সম্পাদন করতে রিডলাইন দ্বারা ব্যবহৃত হয় ।
আপনি যদি এটি না চান তবে এর একটি সম্ভাব্য সমাধান হ'ল আপনার কনফিগারেশনটি স্রোতের ~/.bashrcপরে কী-র বাইন্ডিংগুলি পুনরুদ্ধার fzfকরা হবে। উদাহরণস্বরূপ, যদি আপনি C-tএটির পুরানো আচরণটি রাখতে চান , এটি কার্সারের চারপাশে 2 টি অক্ষর স্থানান্তর করছে এবং fzf-file-widgetঅন্য একটি কীতে আবদ্ধ হয়, তবে আসুন আমরা বলি যে C-x C-tআপনি এই লাইনগুলি শেষে যুক্ত করতে পারেন ~/.bashrc:
bind -x '"\C-x\C-t": fzf-file-widget'
bind '"\C-t": transpose-chars'
একই জিনিসটি zshশেলের ক্ষেত্রে প্রযোজ্য , তবে কী বাঁধাই ইনস্টল করার সিনট্যাক্সটি কিছুটা আলাদা:
bindkey '^X^T' fzf-file-widget
bindkey '^T' transpose-chars
আপনার ব্যবহৃত শেল কী বাইন্ডিংগুলির মধ্যে যদি কোনওটি ওভাররাইড হয়ে যায় তবে fzfআপনি এটি পুনরুদ্ধার করতে চান তবে জানেন না যে ফাংশনটি কার্যকর হয়েছিল তার সঠিক নাম কী, আপনি নিম্নলিখিত জিনিসটি চেষ্টা করতে পারেন।
প্রথমে আপনার অভ্যন্তরে ~/.bashrc, অস্থায়ীভাবে লাইনটি মন্তব্য করুন যা fzfকনফিগারেশনটির উত্স sources তারপরে, টার্মিনালটি আবার খুলুন এবং bind -Pকমান্ডের আউটপুটটি দেখুন , যা আপনি একটি ভিম বাফারে পড়তে পারেন:
bind -P | vim -R -
আমি নিশ্চিত নই, তবে আমি মনে করি এটির বেশিরভাগ বা সমস্ত readlineকী বাইন্ডিংগুলি প্রদর্শন করা উচিত । যদি আপনি C-tকী- তে আবদ্ধ পঠন ফাংশনের নামটি সন্ধান করেন, ভিম বাফারে, আপনি অনুসন্ধান করতে পারেন \\C-t। এবং যদি আপনি আবদ্ধ M-c(মেটা / ইএলটি কী) সন্ধান করে থাকেন তবে আপনি অনুসন্ধান করতে পারবেন \\ec( \eপলায়ন কীটির জন্য দাঁড়িয়েছে এবং এটি M-cএকই কীকোড তৈরি করে বলে মনে হচ্ছে escape + c)।
কমান্ডের zshআউটপুট দেখে আপনি একই জিনিস করতে পারেন bindkey। তবে ^[এবার, মেটা / ওয়েল মডিফায়ার কীটি বোঝানো হয়েছে, অন্যদিকে একটি একক ক্যারেট ( ^) অক্ষরটি নিয়ন্ত্রণ কী হিসাবে দাঁড়িয়েছে।
বর্তমানে, আমি 4 টি কী বাইন্ডিংগুলি পেয়েছি fzfযা তাদের নামে কীওয়ার্ড যুক্ত ফাংশন সম্পাদন করে । তারা কী সিকোয়েন্স ব্যবহার C-i(হিসাবে একই Tab), C-r, C-tএবং M-c। তারা নিম্নলিখিত ফাংশনে আবদ্ধ:
C-i fzf-completion
C-r fzf-history-widget
C-t fzf-file-widget
M-c fzf-cd-widget
আমার সিস্টেমে, মূলত readline( bashকমান্ড লাইনটি সম্পাদনের জন্য ব্যবহৃত গ্রন্থাগার ) এই কীগুলি এই ফাংশনগুলিতে আবদ্ধ করে:
C-i complete
C-r reverse-search-history
C-t transpose-chars
M-c capitalize-word
এবং zle(এটির দ্বারা ব্যবহৃত লাইন সম্পাদক zsh) এগুলিতে আবদ্ধ:
C-i expand-or-complete
C-r history-incremental-search-backward
C-t transpose-chars
M-c capitalize-word
ctrl-pবা এর মতো একটি প্লাগইন যা আপনি সন্ধান করছেন। দ্রষ্টব্য যেunite.vimএটি করতে সক্ষম হওয়া উচিত তবে আমি এটির সুপারিশ করব না কারণ আমার মতে এটি একটি ভারী এবং বাগ তৈরির প্লাগইন।