2013-08-17 2 views
19

나는 ctrlp와 vim으로 ag (silver searcher)를 사용하고 싶습니다.ctrlp + vim에서 ag을 사용하십시오.

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/* 

내가 ctrlp 숨겨진 파일을 포함하고 싶지만 사람들은 숨겨져 있습니다 : 내의 .vimrc이 있습니다. ag 명령에 -u을 추가하면 모든 숨김 파일이 표시되지만 wildignore 또는 .gitignore는 무시됩니다. 이것들을 존중할 수 있습니까?

+0

내 대답이 문제를 해결합니까? 또는 추가 정보가 필요합니까? – mcanfield

+0

확실히 그렇습니다! 답변을 수락 된 것으로 표시하는 것을 잊어 버렸습니다. 죄송합니다. 고마워요! – Richard

답변

34

당신이 ctrlp_show_hiddenctrlp_custom_ignore과 정력의 wildignore 패턴을 포함 ctrlp_user_command 여러 가지 옵션을 통해 사용자 정의 파인더를 사용하는 경우는, CtrlP (see documentation)에 의해 사용되지 않습니다. |

g는 : g 명령이 으로 정의 할 때 적용되지 않습니다 :

주 ...

을 ctrlp_show_hidden ctrlp_user_command | 사용 중입니다.

g : ctrlp_custom_ignore

...

참고 # 1 : 기본적으로 | wildignore | 및 | g : ctrlp_custom_ignore | 적용되는 경우 | globpath() | 파일을 스캔하는 데 사용되므로이 옵션은이 g로 정의 된 명령 일 경우 적용되지 않습니다. ctrlp_user_command | 이 사용됩니다.

이렇게하면 검색 도구의 자비로 여기 있습니다. 다행스럽게도 원하는 행동을 줄 수있는 두 가지 일을 할 수 있습니다.

이 숨겨진 dotfiles 표시 할 수 있지만, 여전히 ignore 파일을 존중하기 위해, AG의 --hidden 옵션을 사용

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

을 이제 패턴을 정의하는 무시, 당신은 파일 .agignore을 무시 AG의 자신을 사용할 수 있습니다. 이것은 디렉토리마다 또는 ag가 각 실행을 점검 할 글로벌 디렉토리가 될 수 있습니다. 집에 넣으십시오 ~/.agignore.

vims를 가지고있는 것이 좋을 수도 있습니다. wildignore는 패턴을 처리하지만, .agignore을 사용하면 cli에서 ag를 사용할 때 이러한 제한 사항에 대한 보너스를 얻을 수 있습니다. 모든 파일을 검색하려면 언급 한 ag -u 명령을 사용하여 ignore 파일을 무시하십시오.

최종 잔액으로 g:ctrlp_user_command을 정의하는 데 사용할 수있는 사전 형식이 있습니다. 여기에는 ignore 키가 포함되어있어 CtrlP는 wildignore 패턴을 사용합니다. 그러나, 나는 이것을 시도한 적이 없으며 문서는 잠재적 인 성능 저하를 지적합니다. 내 제안 된 다른 해결책 (see documentation)이 마음에 들지 않으면이 방법을 시도해보십시오.

주 # 3 : 사전 | 형식이 사용되고 '무시'가 이고 1로 설정된 경우 wildignore | 및 | g : ctrlp_custom_ignore | 이 사용자 지정 명령을 사용할 때 옵션이 적용되지 않습니다. 이 없으면 기본적으로 'ignore'가 0으로 설정되어 성능을 유지합니다. 외부 명령 사용의 이점.

관련 문제