빔 Ctrlp 플러그인은 특정 폴더 이름을 무시 전역하는 방법이있다. 예 :
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
그러나 하나의 프로젝트에만 적용되는 무시 규칙이 있습니다. .gitignore
파일 과 같은 것을 원합니다 .
전역 구성을 수정하지 않고 특정 프로젝트에서 특정 폴더를 무시하는 방법이 있습니까?
빔 Ctrlp 플러그인은 특정 폴더 이름을 무시 전역하는 방법이있다. 예 :
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
그러나 하나의 프로젝트에만 적용되는 무시 규칙이 있습니다. .gitignore
파일 과 같은 것을 원합니다 .
전역 구성을 수정하지 않고 특정 프로젝트에서 특정 폴더를 무시하는 방법이 있습니까?
답변:
Ctrlp를 사용하면 폴더의 파일 목록을 가져 오는 데 사용할 명령을 지정할 수 있습니다. 따라서 이름이 지정된 것을 제외 beets.txt
하려면 다음을 수행하십시오.
let g:ctrlp_user_command = 'find %s -type f | grep -v "beets.txt"'
그것은 전 세계적이지만 대답을 향한 시작 : 자신의 쉘 명령을 제공하십시오.
또한 Ctrlp를 사용하면 마커가있는 여러 쉘 명령을 제공 할 수 있습니다. "루트 디렉토리에이 마커가 있으면이 명령을 사용하십시오"라는 의미입니다.
에서이 내용을 발견 :help ctrlp
했으며 문제에 대한 저자의 의견에 따라 약간 수정되었습니다.
let g:ctrlp_user_command = {
\ 'types': {
\ 1: ['.git', 'cd %s && git ls-files --cached --exclude-standard --others'],
\ 2: ['.hg', 'hg --cwd %s locate -I .'],
\ },
\ 'fallback': 'find %s -type f'
\ }
" .git
폴더 git ls-files...
에 있으면을 .hg
사용 hg --cwd...
하고 그렇지 않으면을 사용하고 그렇지 않으면 일반을 사용하십시오 find
."라는 의미입니다.
따라서 한 프로젝트에서 특정 폴더를 무시하려면 해당 폴더를 무시하는 명령을 고안 한 다음 해당 프로젝트에 고유 마커를 배치하여 Ctrlp가 특수 명령을 사용하도록하십시오 .
(제 경우에는 실제로에있는 파일을 무시하고 싶으 .gitignore
므로 git ls-files
위 의 명령이 저에게 효과적입니다.)
CtrlP에 Silver Searcher 백엔드를 사용하는 경우 (훨씬 빠름) .agignore
파일을 프로젝트 디렉토리에 다음과 같은 형식으로 추가하십시오 .gitignore
.
.git/
.hg/
.svn/
또는 전역 ~/.agignore
파일을 유지 하십시오.
이것에 실버 검색기를 백엔드로 추가하십시오. .vimrc
let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'
if executable("ag") let g:ctrlp_user_command = 'ag %s -l --nocolor --depth 8 -g ""' endif
. 깊이 제한은 홈 폴더에서 파일을 편집하는 동안 실수로 ctrl-p를 눌렀을 때 유용합니다. 숨겨진 플래그는 .git /의 파일을 포함한다는 것을 알았습니다.
.gitignore
(Nathan grep 솔루션 기반) 과 같은 파일 로이 문제를 해결하기 위해 이름이 지정된 파일을 만들고 .ctrlpignore
무시 해야하는 패턴을 줄로 구분하여 넣었습니다.
node_modules/
\.log$
...
그리고 내 ctrlp 구성 :
let g:ctrlp_user_command = 'find %s -type f | grep -v "`cat .ctrlpignore`"'
아마도 그 .gitignore
자체는 ctrlp의 파일을 무시하는 데 사용될 수 있으며 거의 동일한 작업을 수행하기 위해 새 파일을 만들 필요가 없습니다.
으로 바그너 엔드 레데가 말했다, 별도의를 사용하는 것은 .ctrlpignore
좋은 생각이 될 것입니다.
보다 강력하고 편리한 vim 설정은 다음과 같습니다.
let g:ctrlp_user_command = 'cd %s;
\ commonfilter="\.(jpg|bmp|png|jar|7z|zip|tar|gz|tgz|bz)$";
\ if [ ! -r ".ctrlpignore" ]; then
\ find . -type f | grep -Evi "$commonfilter";
\ else
\ find . -type f | grep -vF "$(cat .ctrlpignore)" | grep -Evi "$commonfilter";
\ fi'
.ctrlpignore
ctrlp에 의해 루트 디렉토리로 인식되는 모든 디렉토리에 넣을 수 있습니다. 다음은 예입니다. 모든 줄은./
vim ~/.ctrlpignore
./Desktop
./R
./.vim
./.local/lib
.....
노트 :
grep -F
예를 들어 패턴을 해석합니다. './ptmp'를 필터링하지 않으려는 경우 고정 문자열 인 './.tmp'. './.tmp'도 './.tmp2'를 필터링합니다. 잊어 버려 난 싫어\.
g:ctrlp_custom_ignore
g:ctrlp_user_command
설정되어 있으면 무시됩니다 . 더 복잡한 작업을 수행 할 수 있습니다.g:ctrlp_user_command
블랙리스트 대신 화이트리스트도 가능합니다. 별도의 스크립트로 구현하면 더욱 편리