আমি নিশ্চিত না যে আপনি এটি যা খুঁজছেন, তবে সম্ভবত আপনি 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
।
এছাড়াও, যদি fzf
tmux একটি ফলকে খোলে, এবং আপনি এটি সম্পূর্ণ স্ক্রীনটি পরিবর্তে লাগে পছন্দ করেন, আপনি সমস্ত কমান্ড করার জন্য একটি ঠুং সংযুক্ত করতে পারবেন ( :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
এটি করতে সক্ষম হওয়া উচিত তবে আমি এটির সুপারিশ করব না কারণ আমার মতে এটি একটি ভারী এবং বাগ তৈরির প্লাগইন।