2009-02-04 15 views

उत्तर

3
" 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 
के लिए भी काम करता है
+1

मैं एक बहुत अपने F5- तरह यह मेरे इस मानचित्रण कि स्वचालित रूप से कर्सर के तहत शब्द का विस्तार और एक झाड़ू में lopen यह सुनिश्चित करने के लिए नेतृत्व किया एफ 8 विचार। यहां उन आदेशों के कुछ विज़ुअलाइजेशन/आउटपुट होना अच्छा लगेगा। एफ 8 कैसे काम करने के लिए डिज़ाइन किया गया है? यह केवल वर्तमान निर्देशिका की खोज करता है? - - एक डीआईआर का छोड़ना एक कस्टम है - क्यों 'node_modules'? - - कैसे विम regexes विम के डिफ़ॉल्ट कामकाज बदल जाते हैं? - - निम्न है कि मैंने अपनी .tex फ़ाइलों की खोज कैसे बनाई है https://askubuntu.com/a/789769/25388 यह सीखना अच्छा होगा कि इसे कैसे सुधारें। यह इतना सहज नहीं है इसलिए मैं अक्सर तर्क भी भूल गया। –

+0

node_modules डीआईआर है जिसमें एनपीएम मॉड्यूल से बहुत सारे जेएस कोड होते हैं यदि आप फ्रंट-एंड विकसित करेंगे ... यह सिर्फ एक उदाहरण है ... –

+1

आप का बैकअप लें। Vimrc और उन सेटिंग्स को जोड़ें, उन्हें लोड करें: तो% और कमांड में "मदद करता है" चलाने की कोशिश करने से ... vim कठिन है - आपको उन हजारों बार दोहराना होगा, लेकिन एक बार जब आप उन्हें मास्टर करेंगे तो आप हर किसी को हंसेंगे जो अपनी गहरी नई यूआई आईडीई फीचर्स को इंगित करता है। .. –

10

:set hlsearch का उपयोग करके पीले रंग के सभी मैचों को हाइलाइट किया जाएगा जिससे आप आसानी से मैचों के लिए फ़ाइल स्कैन कर सकते हैं। यही कारण है, क्या आप हालांकि चाहते हैं, नहीं हो सकता है खोज करने के बाद:

:global/regular-expression/print 

आप पैटर्न/regex बाहर छोड़ कर सकते हैं: जी // पी सूचीबद्ध से मेल खाता है

+2

होना चाहिए ': सेट hlsearch' नहीं ': hlsearch'। –

+0

जब आपको उनकी आवश्यकता नहीं होती है तो हाइलाइट को साफ़ करने के लिए 'nohl'' को मानचित्र बनाना भी उपयोगी होता है। भयानक मामूली के लिए – Kos

178
:g//p 

अपने लंबे समय तक फॉर्म में आप दे देंगे और विम पिछले खोज शब्द का पुनः उपयोग करेंगे।

ट्रिविया:grep उपकरण का नाम इस कमांड अनुक्रम के बाद रखा गया था।

+65

+1 !!! – manifest

+14

': g //' - चूंकि पी (रिंट) डिफ़ॉल्ट क्रिया है, तो आप इसे भी छोड़ सकते हैं। – dekeguard

+3

': जी /' भी छोटा है! – Sparhawk

8

इस पर विस्तार से बता दें ...

/example 
:g//p 

के बजाय आप भी सीधे

:g/example/p 

लिख सकते हैं या, के रूप में पी (प्रिंट करें) के लिए डिफ़ॉल्ट क्रिया है: ग्राम (lobal) कमांड, इसे

:g/example 

और पी (रिंट) के बजाय, अन्य क्रियाएं संभव हो सकती हैं, उदाहरण के लिए घ (हटाएं)। देखें: सहायता: वैश्विक

42

तुम भी एक कर सकते हैं:

g/pattern/#

कि पैटर्न आप चाहते हैं और लाइन की संख्या प्रिंट होगा।

+2

+1। – iamnotmaynard

+0

अच्छा है।लेकिन अगर आपके पास लाइन नंबर पहले ही सक्षम हैं, तो '#' की आवश्यकता नहीं है। यह खोज परिणामों को नेविगेट करने की क्षमता के लिए डिफ़ॉल्ट –

38

यदि आप इस सूची को देखो और मैचों के बीच तुरंत जाने के लिए चाहते हैं,

:vimgrep example %

या

का उपयोग कर

:grep example %

यह सभी के साथ "त्रुटि सूची" से स्थापित हो जाएगा पर विचार मैचों में से ताकि आप सभी को Quickfix बफर में सूचीबद्ध करने के लिए :copen का उपयोग कर सकें, उस मैच पर कूदने के लिए किसी विशेष पंक्ति पर एंटर दबाएं, याजैसे कमांड का उपयोग करेंऔर :cp आगे और आगे जाने के लिए।

एक संपूर्ण विवरण के लिए, my reply to a similar question

+3

+1 द्वारा लाइन नंबर दिखाता है! –

12

एक और संभावना का उपयोग करने के फ़ाइल खोज आदेशों शामिल है देखते हैं।

[I 

यह कर्सर के नीचे शब्द की सभी घटनाओं को सूचीबद्ध करेगा। हालांकि आपको इसकी आवश्यकता से अधिक हो सकता है, क्योंकि यह वर्तमान फ़ाइल में शामिल की गई किसी भी फाइल को भी खोजेगा।

लेकिन इस आदेश के बारे में अच्छी बात यह है कि खोज परिणाम प्रदर्शन प्रत्येक मैच की लाइन संख्या के अलावा, मैचों की संख्या की गणना भी दिखाता है।

:help include-search 

कई प्रकार के संस्करण देखने के लिए।

एक नोट के बारे में

:g//p 

यह

:g// 

के लिए आगे कम किया जा सकता है, क्योंकि के रूप में अन्य लोगों ने कहा, पी (प्रिंट करें) डिफ़ॉल्ट क्रिया है।

+0

क्या [i' संदर्भ से संदर्भ प्राप्त करना संभव है, जैसे grep '--context 9' पर? –

23

बस एक नया सीखा: Location List!
:lvim foo % वर्तमान फ़ाइल में foo की खोज के लिए fooस्थान सूची में सभी मिलान दर्ज करें।
:lopen टाइप करें जो Quickfix विंडो में स्थान सूची खोलने के लिए है, जो सामान्य रूप से पूरी तरह से नेविगेट करने योग्य है।
उपयोग :lnext/:lprevious सूची के माध्यम से करने के लिए (उपयोग tpope/बेहतर अनुभव के लिए अछूता मैपिंग)

+0

क्या कोई सेटिंग है: डिफ़ॉल्ट रूप से लोपेन किया जाता है? – lkraav

+1

अच्छी टिप! nnoremap च: lvim/ = विस्तार ("") /% : lopen

4
g/pattern 

आप :set number है, तो उपरोक्त आदेश प्रदर्शित करता है लाइन नंबर के साथ-साथ।

:set number नहीं यदि आप हैं, तो

g/pattern/# 

लाइन नंबर प्रदर्शित करेगा।

2

यदि आपने पहले सिर्फ /pattern

संपादित का उपयोग कर एक जटिल खोज पैटर्न गढ़ी आप प्राप्त कर सकते हैं मैचों के साथ एक अच्छा quickfix खिड़की आपकी वर्तमान खोज पैटर्न

:vim // % 
:copen 

सुपर आसान फार्म: बस पता चला यह सभी खुले बफर

:bufdo vimgrepadd // % 
:copen 
0

Ctrl-F सभी खोज परिणाम सूची:

nmap <C-f> :vimgrep /<C-r>//g %<CR> \| !:copen <Enter> 
संबंधित मुद्दे