मैं मैचों को सूचीबद्ध करना चाहता हूं, जब मैं हिट करता हूं:आप विम की खोज के मैचों की सूची कैसे बना सकते हैं?
/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
के लिए भी काम करता है
:set hlsearch
का उपयोग करके पीले रंग के सभी मैचों को हाइलाइट किया जाएगा जिससे आप आसानी से मैचों के लिए फ़ाइल स्कैन कर सकते हैं। यही कारण है, क्या आप हालांकि चाहते हैं, नहीं हो सकता है खोज करने के बाद:
:global/regular-expression/print
आप पैटर्न/regex बाहर छोड़ कर सकते हैं: जी // पी सूचीबद्ध से मेल खाता है
होना चाहिए ': सेट hlsearch' नहीं ': hlsearch'। –
जब आपको उनकी आवश्यकता नहीं होती है तो हाइलाइट को साफ़ करने के लिए 'nohl'' को मानचित्र बनाना भी उपयोगी होता है। भयानक मामूली के लिए – Kos
इस पर विस्तार से बता दें ...
/example
:g//p
के बजाय आप भी सीधे
:g/example/p
लिख सकते हैं या, के रूप में पी (प्रिंट करें) के लिए डिफ़ॉल्ट क्रिया है: ग्राम (lobal) कमांड, इसे
:g/example
और पी (रिंट) के बजाय, अन्य क्रियाएं संभव हो सकती हैं, उदाहरण के लिए घ (हटाएं)। देखें: सहायता: वैश्विक
तुम भी एक कर सकते हैं:
g/pattern/#
कि पैटर्न आप चाहते हैं और लाइन की संख्या प्रिंट होगा।
+1। – iamnotmaynard
अच्छा है।लेकिन अगर आपके पास लाइन नंबर पहले ही सक्षम हैं, तो '#' की आवश्यकता नहीं है। यह खोज परिणामों को नेविगेट करने की क्षमता के लिए डिफ़ॉल्ट –
यदि आप इस सूची को देखो और मैचों के बीच तुरंत जाने के लिए चाहते हैं,
:vimgrep example %
या
का उपयोग कर:grep example %
यह सभी के साथ "त्रुटि सूची" से स्थापित हो जाएगा पर विचार मैचों में से ताकि आप सभी को Quickfix बफर में सूचीबद्ध करने के लिए :copen
का उपयोग कर सकें, उस मैच पर कूदने के लिए किसी विशेष पंक्ति पर एंटर दबाएं, याजैसे कमांड का उपयोग करेंऔर :cp
आगे और आगे जाने के लिए।
एक संपूर्ण विवरण के लिए, my reply to a similar question
+1 द्वारा लाइन नंबर दिखाता है! –
एक और संभावना का उपयोग करने के फ़ाइल खोज आदेशों शामिल है देखते हैं।
[I
यह कर्सर के नीचे शब्द की सभी घटनाओं को सूचीबद्ध करेगा। हालांकि आपको इसकी आवश्यकता से अधिक हो सकता है, क्योंकि यह वर्तमान फ़ाइल में शामिल की गई किसी भी फाइल को भी खोजेगा।
लेकिन इस आदेश के बारे में अच्छी बात यह है कि खोज परिणाम प्रदर्शन प्रत्येक मैच की लाइन संख्या के अलावा, मैचों की संख्या की गणना भी दिखाता है।
:help include-search
कई प्रकार के संस्करण देखने के लिए।
एक नोट के बारे में
:g//p
यह
:g//
के लिए आगे कम किया जा सकता है, क्योंकि के रूप में अन्य लोगों ने कहा, पी (प्रिंट करें) डिफ़ॉल्ट क्रिया है।
क्या [i' संदर्भ से संदर्भ प्राप्त करना संभव है, जैसे grep '--context 9' पर? –
बस एक नया सीखा: Location List
!
:lvim foo %
वर्तमान फ़ाइल में foo
की खोज के लिए foo
स्थान सूची में सभी मिलान दर्ज करें।
:lopen
टाइप करें जो Quickfix विंडो में स्थान सूची खोलने के लिए है, जो सामान्य रूप से पूरी तरह से नेविगेट करने योग्य है।
उपयोग :lnext
/:lprevious
सूची के माध्यम से करने के लिए (उपयोग tpope/बेहतर अनुभव के लिए अछूता मैपिंग)
क्या कोई सेटिंग है: डिफ़ॉल्ट रूप से लोपेन किया जाता है? – lkraav
अच्छी टिप! nnoremap
g/pattern
आप :set number
है, तो उपरोक्त आदेश प्रदर्शित करता है लाइन नंबर के साथ-साथ।
:set number
नहीं यदि आप हैं, तो
g/pattern/#
लाइन नंबर प्रदर्शित करेगा।
यदि आपने पहले सिर्फ /pattern
संपादित का उपयोग कर एक जटिल खोज पैटर्न गढ़ी आप प्राप्त कर सकते हैं मैचों के साथ एक अच्छा quickfix
खिड़की आपकी वर्तमान खोज पैटर्न
:vim // %
:copen
सुपर आसान फार्म: बस पता चला यह सभी खुले बफर
:bufdo vimgrepadd // %
:copen
Ctrl-F सभी खोज परिणाम सूची:
nmap <C-f> :vimgrep /<C-r>//g %<CR> \| !:copen <Enter>
मैं एक बहुत अपने F5- तरह यह मेरे इस मानचित्रण कि स्वचालित रूप से कर्सर के तहत शब्द का विस्तार और एक झाड़ू में lopen यह सुनिश्चित करने के लिए नेतृत्व किया एफ 8 विचार। यहां उन आदेशों के कुछ विज़ुअलाइजेशन/आउटपुट होना अच्छा लगेगा। एफ 8 कैसे काम करने के लिए डिज़ाइन किया गया है? यह केवल वर्तमान निर्देशिका की खोज करता है? - - एक डीआईआर का छोड़ना एक कस्टम है - क्यों 'node_modules'? - - कैसे विम regexes विम के डिफ़ॉल्ट कामकाज बदल जाते हैं? - - निम्न है कि मैंने अपनी .tex फ़ाइलों की खोज कैसे बनाई है https://askubuntu.com/a/789769/25388 यह सीखना अच्छा होगा कि इसे कैसे सुधारें। यह इतना सहज नहीं है इसलिए मैं अक्सर तर्क भी भूल गया। –
node_modules डीआईआर है जिसमें एनपीएम मॉड्यूल से बहुत सारे जेएस कोड होते हैं यदि आप फ्रंट-एंड विकसित करेंगे ... यह सिर्फ एक उदाहरण है ... –
आप का बैकअप लें। Vimrc और उन सेटिंग्स को जोड़ें, उन्हें लोड करें: तो% और कमांड में "मदद करता है" चलाने की कोशिश करने से ... vim कठिन है - आपको उन हजारों बार दोहराना होगा, लेकिन एक बार जब आप उन्हें मास्टर करेंगे तो आप हर किसी को हंसेंगे जो अपनी गहरी नई यूआई आईडीई फीचर्स को इंगित करता है। .. –