2014-06-29 7 views
6

जब कमांड लाइन पर ag का उपयोग कर, इसलिए जैसे:विम Ctrlp एजी (चांदी खोज) --ignore विकल्प को पार्स नहीं सही ढंग से

$> ag . --ignore="*node_modules/*/node_modules" -l --nocolor -f -U -g ""

मैं एक से अधिक किसी भी node_modules निर्देशिका के माध्यम से खोज से बचने के लिए कर रहा हूँ मेरे नोड सेवाओं में गहरा स्तर, जो वांछित व्यवहार है।

हालांकि, जब मैं अपने vimrc में निम्न का उपयोग कर, node_modules निर्देशिका एक से अधिक स्तर गहरी उपेक्षा नहीं कर रहे हैं:

" Use The Silver Searcher https://github.com/ggreer/the_silver_searcher 
if executable('ag') 
    " Use Ag over Grep 
    set grepprg=ag\ --nogroup\ --nocolor 

    " Use ag in CtrlP for listing files. Lightning fast and respects .gitignore 
    let g:ctrlp_user_command = 'ag %s --ignore="*node_modules/*/node_modules" -l --nocolor -f -U -g ""' 
endif 

मैं कैसे ag और ctrlp की स्थापना की सही ढंग से उन निर्देशिकाओं की अनदेखी करने के कर सकते हैं? यह सुनिश्चित नहीं है कि मुझे vimrc पर प्रत्यारोपण करते समय एक अलग वाक्यविन्यास (जैसे regex) या कुछ अन्य गॉचा का उपयोग करने की आवश्यकता है।

कारण मैं इस wildignore में नहीं डाल रहा है कि node_modules मेरी .gitignore में अनदेखी कर रहे हैं, इसलिए मैं -U विकल्प का उपयोग कर रहा हूँ किसी भी VCS फ़ाइलों की अनदेखी करने (जिससे node_modules खोज करने के लिए ag अनुमति) है - लेकिन इस विकल्प भी wildignore बाईपास लगता है।

+0

ओह:

सुनिश्चित नहीं हैं कि Ctrlp साथ आपकी समस्या का समाधान होगा, किसी भी मामले में यह काफी तेजी से पहले से ही मेरे लिए है तो मैं सामान्य इस तरह चर उपेक्षा का उपयोग करें! स्तरित abstractions की खुशी! – romainl

+0

यह पहली बार मुझे एक प्रश्न के अंदर एक जवाब मिला है;) मैंने '.ignignore' के कारण' --ignore' भाग हटा दिया। मैंने '-U' हटा दिया ताकि एजी अभी भी '.gitignore' का उपयोग करे। और मैंने देखा कि एजी डिफ़ॉल्ट रूप से छिपी हुई फाइलों को अनदेखा करता है। – Rohmer

+0

मैंने यहां इस पृष्ठ का संदर्भ दिया है: https://github.com/kien/ctrlp.vim/issues/174 – Rohmer

उत्तर

6
आप की तरह

मैं दोनों उपकरणों का उपयोग करते हैं, लेकिन जिस तरह से मैं फ़ोल्डरों उपेक्षा एजी के लिए अलग

है मैं उपयोग .agignore फ़ाइल, यह .gitignore रूप में एक ही sintax है और बस की तरह, यह में जा सकते हैं आपका घर फ़ोल्डर या परियोजना फ़ोल्डर।

let g:ctrlp_custom_ignore = { 
    \ 'dir': '\v[\/](doc|tmp|node_modules)', 
    \ 'file': '\v\.(exe|so|dll)$', 
    \ } 
+1

एजी [अब अनुशंसा करता है] (https://github.com/ggreer/the_silver_searcher/commit/dd8e8396efc6f6be6ef3a730e700d6ef8da1d813) नामकरण '.ignignore' की बजाय फ़ाइल '.ignore'। यह अन्य फ़ाइलों को ['ripgrep'] (https://github.com/BurntSushi/ripgrep) को उसी फ़ाइलों को अनदेखा करने की अनुमति देता है। –

संबंधित मुद्दे