আমি ম্যাচগুলির তালিকা করতে চাই, যখন আমি হিট করি:
/example
যাতে আমি দেখতে পাচ্ছি যে সমস্ত ম্যাচ একসাথে।
আমি ম্যাচগুলির তালিকা করতে চাই, যখন আমি হিট করি:
/example
যাতে আমি দেখতে পাচ্ছি যে সমস্ত ম্যাচ একসাথে।
উত্তর:
" put in your ~/.vimrc file
" START search related configs and helps
"
" ignore case when searching
set ignorecase
" search as characters are entered, as you type in more characters, the search is refined
set incsearch
" highlight matches, in normal mode try typing * or even g* when cursor on string
set hlsearch
" yank those cheat commands, in normal mode type q: than p to paste in the opened cmdline
" how-to search for a string recursively
" :grep! "\<doLogErrorMsg\>" . -r
"
" how-to search recursively , omit log and git files
" :vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`
" :vimgrep /srch/ `find . -type f -name '*.pm' -o -name '*.pl'`
"
" how-to search for the "srch" from the current dir recursively in the shell
" vim -c ':vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`'
"
" how-to highlight the after the search the searchable string
" in normmal mode press g* when the cursor is on a matched string
" how-to jump between the search matches - open the quick fix window by
" :copen 22
" how-to to close the quick fix window
" :ccl
" F5 will find the next occurrence after vimgrep
map <F5> :cp!<CR>
" F6 will find the previous occurrence after vimgrep
map <F6> :cn!<CR>
" F8 search for word under the cursor recursively , :copen , to close -> :ccl
nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
" omit a dir from all searches to perform globally
set wildignore+=**/node_modules/**
" use perl regexes - src: http://andrewradev.com/2011/05/08/vim-regexes/
noremap / /\v
"
" STOP search related configs and helps
:g//p
এর দীর্ঘ আকারে:
:global/regular-expression/print
আপনি প্যাটার্ন / রেজেক্সটি ছেড়ে দিতে পারেন এবং ভিম পূর্ববর্তী অনুসন্ধান শব্দটি আবার ব্যবহার করবে।
তুচ্ছ বস্তু: , grep টুল এই কমান্ড ক্রম পরে ঘোষণা করা হয়।
:g//
- যেহেতু পি (রিন্ট) হ'ল ডিফল্ট ক্রিয়া, আপনি এটিও ছেড়ে দিতে পারেন।
:g/
আরও খাটো!
--context 9
?
:%s/regular-expression//gn
এটি এই লাইনের সাথে কিছু তৈরি করবে:X matches on Y lines
আপনি এটিও করতে পারেন:
g/pattern/#
এটি আপনার চান নিদর্শন এবং লাইনের সংখ্যা মুদ্রণ করবে।
#
তার প্রয়োজন হয় না। এটি ডিফল্টরূপে লাইন সংখ্যাগুলি দেখায়
আপনি যদি এই তালিকাটি দেখতে চান এবং ম্যাচের মধ্যে দ্রুত ঝাঁপিয়ে পড়তে চান তবে ব্যবহার বিবেচনা করুন
:vimgrep example %
অথবা
:grep example %
এই এত ম্যাচ সব "ত্রুটি তালিকা" পূরণ করবে আপনি ব্যবহার করতে পারেন :copen
লিস্টে quickfix বাফারে তাদের সবাইকে, প্রেস ম্যাচের বা এগুলির মতো ব্যবহার কমান্ড ঝাঁপ একটি বিশেষ লাইনে লিখুন :cn
এবং :cp
আগে পিছে যান।
পুরো ব্যাখ্যা জন্য, একই প্রশ্নের আমার উত্তর দেখুন
E499: Empty file name for '%' or '#', only works with ":p:h"
ম্যাকভিম 8.1 এ দেয়
সবেমাত্র একটি নতুন শিখেছে: দ্য Location List
!
টাইপ করুন :lvim foo %
জন্য অনুসন্ধান করতে foo
বর্তমান ফাইলে এবং ধারণকারী সব ম্যাচ প্রবেশ foo
মধ্যে অবস্থান তালিকা । কুইকফিক্স উইন্ডোতে অবস্থানের তালিকাটি খোলার জন্য
টাইপ করুন :lopen
, যা যথারীতি পুরোপুরি নাব্য। তালিকাগুলির মাধ্যমে /
ব্যবহার করুন ( সেরা অভিজ্ঞতার জন্য টিপপ / আনপেইার্ড ম্যাপিং ব্যবহার করুন):lnext
:lprevious
আর একটি সম্ভাবনা হ'ল অন্তর্ভুক্ত ফাইল অনুসন্ধান কমান্ডগুলি ব্যবহার করা।
[I
এটি কার্সারের নীচে শব্দের সমস্ত উপস্থিতি তালিকাবদ্ধ করবে। এটি আপনার প্রয়োজনের তুলনায় আরও বেশি হতে পারে, কারণ এটি বর্তমান ফাইলটিতে অন্তর্ভুক্ত থাকা কোনও ফাইল অনুসন্ধান করবে।
তবে এই কমান্ডটি সম্পর্কে দুর্দান্ত জিনিসটি হ'ল অনুসন্ধানের ফলাফলটি প্রতিটি ম্যাচের লাইন সংখ্যা ছাড়াও ম্যাচের সংখ্যার একটি সংখ্যাও দেখায়।
:help include-search
প্রচুর রূপ দেখতে।
সম্পর্কে একটি নোট
:g//p
এটি আরও কমানো যেতে পারে
:g//
কারণ, অন্যরা যেমন বলেছে, পি (রিন্ট) হ'ল ডিফল্ট ক্রিয়া।
[I
গ্রীপের মতো প্রসঙ্গেও ফলাফল পাওয়া সম্ভব --context 9
?
quickfix
মিলগুলি আপনার বর্তমান অনুসন্ধানের ধরণটি তৈরি করে আপনি একটি দুর্দান্ত উইন্ডো পেতে পারেন
:vim // %
:copen
আপনি যদি ইতিপূর্বে একটি জটিল অনুসন্ধান প্যাটার্ন স্রেফ ব্যবহার করে তৈরি করেন তবে খুব কার্যকর /pattern
সম্পাদনা করুন : সন্ধান পেয়েছেন এটি সমস্ত ওপেন বাফারগুলির জন্যও কাজ করে
:bufdo vimgrepadd // %
:copen
ব্যবহারের :set hlsearch
ফলে হলুদ রঙের সমস্ত ম্যাচ হাইলাইট হবে যা আপনাকে ম্যাচের জন্য সহজেই ফাইল স্ক্যান করতে দেয়। অনুসন্ধানের পরে, আপনি যা চান তা এটি নাও হতে পারে: g // পি আপনাকে তালিকাভুক্ত ম্যাচগুলি দেবে
:nohl
আপনার যখন আর প্রয়োজন নেই তখন হাইলাইটগুলি সাফ করার জন্য ম্যাপ করাও কার্যকর ।
এর পরিবর্তে ... এর বিস্তারিত ব্যাখ্যা করা
/example
:g//p
আপনি সরাসরি লিখতে পারেন
:g/example/p
বা, যেমন পি (রিন্ট) হ'ল: জি (লোবাল) কমান্ডের জন্য ডিফল্ট ক্রিয়া, এটি এটিকে ছোট করা যেতে পারে
:g/example
এবং পি (রিন্ট) এর পরিবর্তে অন্যান্য ক্রিয়াকলাপগুলি সম্ভব, যেমন ডি (একাদশ)। দেখুন: সহায়তা: গ্লোবাল
আমি এই জন্য কোড টুকরা লিখেছি। এটি আসলে সমস্যাগুলি এড়িয়ে চলে vimgrep
। এটি নামবিহীন ফাইলগুলির সাথেও কাজ করে। এবং এটি ব্যবহার করা সহজ।
function! Matches(pat)
let buffer=bufnr("") "current buffer number
let b:lines=[]
execute ":%g/" . a:pat . "/let b:lines+=[{'bufnr':" . 'buffer' . ", 'lnum':" . "line('.')" . ", 'text': escape(getline('.'),'\"')}]"
call setloclist(0, [], ' ', {'items': b:lines})
lopen
endfunction
আপনি যখন এটিকে কোনও প্যাটার্নের সাথে কল করবেন তখন এটি সমস্ত মিলগুলির সাথে অবস্থান উইন্ডোটি খুলবে।
এটি একটি আদেশ হতে পারে
command! -nargs=1 Mat call Matches(<f-args>)
সুতরাং আপনাকে যা করতে হবে তা হ'ল টাইপ করা :Mat pattern
আমি বর্তমান ভিজ্যুয়াল নির্বাচনের ম্যাচগুলি পেতে নিম্নলিখিত ম্যাপিংটিও ব্যবহার করি।
vnoremap Y "xy:call Matches(@x)<CR>
node_modules
? - - পার্ল রেজেক্সগুলি কীভাবে ভিমের ডিফল্ট কার্যকারিতা পরিবর্তন করে? - - নিম্নলিখিতটি আমি কীভাবে আমার .tex ফাইলগুলির অনুসন্ধানের জন্য ডিজাইন করেছি Askubuntu.com/a/789769/25388 কীভাবে এটি উন্নত করবেন তা আপনার কাছ থেকে শিখতে ভালো লাগবে। এটি এতটা স্বজ্ঞাত নয় তাই আমি নিজেও প্রায়শই যুক্তিটি ভুলে গিয়েছিলাম।