2013-08-17 8 views
19

Chcę użyć ag (silver searcher) z ctrlp i vim. mam to w moim .vimrc:Użyj ag w ctrlp + vim

if executable("ag") 
    set grepprg=ag\ --nogroup\ --nocolor 
    let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' 
endif 

let g:ctrlp_show_hidden = 1 

set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*/.tmp/*,*/.sass-cache/*,*/node_modules/*,*.keep,*.DS_Store,*/.git/* 

Chcę ctrlp zawierać ukryte pliki, ale te są ukryte. Jeśli dodaję -u do komendy ag, pokazuje ona wszystkie ukryte pliki, ale nie respektuje wildignore lub .gitignore. Czy można to uszanować?

+0

Czy moja odpowiedź rozwiązuje Twój problem? czy potrzebujesz dodatkowych informacji? – mcanfield

+0

Oczywiście! Zapomniałem oznaczyć twoją odpowiedź jako zaakceptowaną, przepraszam za to. Dziękuję Ci bardzo! – Richard

Odpowiedz

34

Jeśli używasz niestandardowego Finder poprzez ctrlp_user_command kilku opcji, w tym ctrlp_show_hiddenctrlp_custom_ignore i vim za wildignore wzorców, nie są wykorzystywane przez CtrlP (see documentation).

g: ctrlp_show_hidden

...

Uwaga: nie ma zastosowania, gdy komenda zdefiniowana | g: ctrlp_user_command | jest używany.

g: ctrlp_custom_ignore

...

Uwaga nr 1: domyślnie | wildignore | i | g: ctrlp_custom_ignore | tylko stosuje się, gdy | globpath() | służy do skanowania plików, dlatego te opcje nie mają zastosowania, gdy polecenie zdefiniowane przez | g: ctrlp_user_command | jest używany .

Zostajesz na łasce swojego narzędzia do wyszukiwania, w tym przypadku ag. Na szczęście możesz zrobić kilka rzeczy, które powinny dać ci pożądane zachowanie.

Aby dostać swoje ukryte dotfiles się pojawiać, ale nadal szanuję ignore plików, należy wybrać opcję --hidden dla AG:

let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'

Teraz definiowania wzorców ignorować, można użyć ag własnego ignorować plik .agignore. Może to być jeden katalog lub globalny, który ag sprawdzi przy każdym uruchomieniu. Umieszczasz to w swoim katalogu domowym ~/.agignore.

Rozumiem, że fajnie jest mieć vim wildignore dbać o wzory, ale z .agignore otrzymujesz premię tych ograniczeń, gdy używasz ag z cli. Jeśli chcesz przeszukać wszystkie pliki, po prostu użyj polecenia ag -u, o którym wspomniałeś, aby ominąć wszystkie pliki ignore.

Jako ostateczna ciekawostka istnieje format Słownika, którego można użyć do zdefiniowania g:ctrlp_user_command, który zawiera klucz ignore, który spowoduje, że CtrlP użyje wzorów wildignore. Jednak nigdy tego nie próbowałem, a dokumentacja wskazuje potencjalny hit wydajności. Możesz wypróbować tę metodę, jeśli nie podoba ci się moje inne proponowane rozwiązanie (see documentation).

Uwaga # 3: chyba że | Słownik | format jest używany i "ignoruj" jest zdefiniowany i ustawiony na 1, | wildignore | i | g: ctrlp_custom_ignore | Opcje nie mają zastosowania, gdy używane są te niestandardowe polecenia.Gdy nie ma wartości "ignore", domyślnie ustawiona jest wartość "0", co pozwala zachować wydajność za pomocą zewnętrznych poleceń.