답변:
내 설정의 관련 부분은 다음과 같습니다.
와일드 메뉴를 활성화하고
set wildmenu
파일 이름 완성이이 파일과 디렉토리를 건너 뛰도록하고
set wildignore+=*.swp,*.bak
set wildignore+=*.pyc,*.class,*.sln,*.Master,*.csproj,*.csproj.user,*.cache,*.dll,*.pdb,*.min.*
set wildignore+=*/.git/**/*,*/.hg/**/*,*/.svn/**/*
set wildignore+=*/min/*
set wildignore+=tags,cscope.*
set wildignore+=*.tar.*
대소 문자를 구분하지 않고
set wildignorecase
파일을 나열하고 사용자가 와일드 메뉴를 사용하여 선택할 수 있도록하고
set wildmode=list:full
현재 파일의 디렉토리와 작업 디렉토리 아래의 모든 디렉토리를 Vim 's path
에 추가하십시오.
set path=.,**
경고! 경로 옵션은 매우 유용합니다. 위의 값 — .,**
— 나에게 효과적 이지만 사용하는 언어에는 표준 라이브러리가 없습니다. 적절한 값에 전적으로 의존 당신 이 필요합니다.
많은 :find
매핑, 대문자 변형은 더 나은 성능을 위해 현재 파일의 디렉토리에서 검색을 시작합니다.
nnoremap ,f :find *
nnoremap ,F :find <C-R>=expand('%:p:h').'/**/*'<CR>
nnoremap ,s :sfind *
nnoremap ,S :sfind <C-R>=expand('%:p:h').'/**/*'<CR>
nnoremap ,v :vert sfind *
nnoremap ,V :vert sfind <C-R>=expand('%:p:h').'/**/*'<CR>
그리고 다음과 같이 보입니다 :
보다 :h :command-completion-custom
마지막 예제를 수정하여 git으로 나열된 파일 만 완성 할 수 있습니다.
command! -nargs=1 -bang -complete=customlist,GitFindComplete
\ GitFind edit<bang> <args>
function! GitFindComplete(ArgLead, CmdLine, CursorPos)
let search_pattern = "*" . a:ArgLead . "*"
let shell_cmd = "git ls-files " . shellescape(search_pattern)
return split(system(shell_cmd), "\n")
endfunction
이제 자동 완성 기능을 사용하여 git으로 나열된 파일을 열 수 있습니다.
:GitFind ome_f<Tab>
사용자 정의 완료 기능에서는 완료 할 수있는 파일을 단순히 나열하는 것 이상을 수행해야합니다. 또한 현재 명령 줄 인수를 기준으로 목록을 필터링 해야합니다 ArgLead
. 이 예에서는 와일드 카드로 git
싸인 인수를 전달하여 필터링을 수행 하도록 요청 합니다 *
.