프로젝트 트리에서 파일을 찾아서 열 수있는 효율적인 방법은 무엇입니까?


12

ctrlpand 같은 플러그인이 없으면 NERDTree프로젝트 트리에서 파일을 찾아서 여는 가장 효율적인 방법은 무엇입니까?

설정 path**/*의 쓸모없는 파일의 결과 .git가 나타납니다 질문에서 꺼내 그래서, 다른 숨겨진 디렉토리.

스마트 한 방식으로 경로를 설정하여 파일 git ls-files이나 기타 파일 만 포함 할 수 있는 방법이 있습니까?

답변:


24

내 설정의 관련 부분은 다음과 같습니다.

  • 와일드 메뉴를 활성화하고

    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>
    

그리고 다음과 같이 보입니다 :

:찾기


1
와, 이것들은 훌륭한 매핑과 설정입니다. 자세한 답변 감사합니다.

3

보다 :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싸인 인수를 전달하여 필터링을 수행 하도록 요청 합니다 *.


이것은 훌륭한 트릭입니다

1

내 방법은 다음과 같은 쉘 기능을 포함합니다 ~/.bash_profile.

vimf() {
  vim $(find . -name $1)
}

그런 다음 프로젝트 트리에서 파일을 열려면 다음을 입력하십시오.

vimf some_file.c
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.