Vim에서 파일을 재귀 적으로 검색 할 수있는 방법이 있습니까 (필요할 때 와일드 카드 사용)? 네이티브가 아니라면이를 처리 할 수있는 플러그인이 있습니까?
Vim에서 파일을 재귀 적으로 검색 할 수있는 방법이 있습니까 (필요할 때 와일드 카드 사용)? 네이티브가 아니라면이를 처리 할 수있는 플러그인이 있습니까?
답변:
:edit명령에 와일드 카드를 사용할 수 있습니다 . 그래서,
:e **/test/Suite.java
현재 디렉토리 계층 구조에 상관없이 test / Suite.java를 엽니 다. 이것은 탭 완성과 함께 작동하므로 파일을 열기 전에 [tab]을 사용하여 와일드 카드를 확장 할 수 있습니다. 대신 가능한 모든 확장을 탐색하는 방법 은 wildmode 옵션을 참조하십시오 .
또 다른 트릭은
:r! find . -type f
현재 디렉토리의 모든 파일 목록을 버퍼로로드합니다. 그런 다음 모든 일반적인 vim 텍스트 조작 도구를 사용하여 목록을 탐색 / 정렬 / 자르고 CTRL+W gf새 창에서 커서 아래에 파일을 열 수 있습니다.
찾기 명령이 있습니다. 추가 **(참조 :help starstar)하면 'path'재귀 적으로 검색 할 수 있습니다.
:set path
현재 경로를 표시 **하고 다음과 같이 추가하십시오.
:set path+=**
그런 다음 입력 할 수 있습니다.
:find myfile.txt
마법처럼 열립니다!
.vimrc에 set 명령을 추가하면 나중에 재귀 검색을 수행 할 수 있습니다. 도트 디렉토리 (예 : .ssh)를 검색하지 않는 것 같습니다.
my*.txt않습니까? 아니면 그렇게 합니까?
:h find.
:set path+=**
ctrlp.vim을 추천 합니다 . 큰 프로젝트에서 작업하기에 이상적인 매우 좋은 플러그인입니다. 파일 이름 또는 전체 경로로 검색, regexp 검색, 프로젝트 루트 (.git | hg | svn | bzr | _darcs 폴더가있는 루트) 자동 감지, 개인화 된 파일 이름 제외 등이 있습니다.
누르기 만하면 <c-p>원하는 것을 검색 할 수있는 매우 직관적 인 창이 열립니다.
한 번에 여러 파일을 선택하고 열 수 있습니다. 또한 특정 줄로 이동, 문자열 발생 또는 기타 Vim 명령과 같은 추가 임의 명령을 허용합니다.
vim을 내장 찾기 명령 (: help find)으로 사용하지만 처음 찾은 파일 만 엽니 다. 그러나이 놀라운 플러그인을 사용할 수 있습니다 : FuzzyFinder 는 원하는 모든 것을 수행합니다.
를 사용하여 파일 시스템을 탐색 할 수 :ex .있지만 재귀 적으로 검색하는 방법을 모르겠습니다 (저는 Vim 초보자입니다. 10 년 밖에 사용하지 않았습니다).
몇 가지 인기있는 파일 브라우저 플러그인이 있습니다.
SuperUser에 대한이 스레드를 참조하십시오 .
Command-T를 사용하면 문자를 입력하는 것만으로도 파일을 매우 빠르게 찾을 수 있습니다. 새 탭에서 파일을 열 수도 있지만 루비 지원으로 컴파일 된 vim이 필요합니다.
내가 가장 좋아하는 vim 플러그인 중 하나의 Command-t 는 FZF와의 통합 위의 루비 기반 플러그인 입니다.
Comamnd-T 및 FZF를 사용하면 매우 빠른 "퍼지"메커니즘으로 검색을 수행 할 수 있습니다.
보시다시피
나는 항상 새 터미널을 열고 명령 기록에서 검색합니다.
CTRL+R
터미널 탭에 작성하여 모든 폴더를 재귀 적으로 검색하는 것 외에도 :
fzf
또한 내부에 쓸 수 있습니다. vim
:CommandT
정말 강력하고 빠릅니다.
vim은이를 수행 할 수있는 grep, lgrep, vimgrep 또는 lvimgrep 명령에 bild가 있습니다.
여기에 그들을 사용하는 방법에 대한 자습서가 있습니다. http://vim.wikia.com/wiki/Find_in_files_within_Vim#Recursive_Search
다음과 같이 실행하여 vim에서 find 또는 grep과 같은 외부 명령을 사용할 수도 있습니다.
:!find ...
:grep test */.java는 test모든 .java파일 에서 단어 를 검색 합니다. 쉘 명령을 :!find사용하여 find파일을 찾습니다. find당신이 PCRE 또는 확장 정규식와 결합하면 쉘 명령은 매우 강력하다
아무도 Unite.vim을 언급하지 않아서 놀랐습니다.아직 않은 .
파일 찾기 (모호하게 또는 기타)는 개발자가 할 수있는 일에 대한 빙산의 일각 일뿐입니다. 그것은에 대한 지원이 포함되어 있습니다 ag, git및 기타 프로그램 / 유틸리티 / 정력 플러그인의 무수한. 학습 곡선은 약간 가파르지만 그것 없이는 내 삶을 상상할 수 없습니다. 사용자 기반이 크고 버그가 즉시 수정됩니다.
Quickfix와 유사한 결과 탐색
용법:
Find my.regex
결과:
grep -E 정규식<enter> 또는 <C-w>gf 새 탭에서 현재 줄의 파일을 열려면gf 현재 탭에서 파일을 열고 파일 목록을 잃어 버리려면대신 모든 파일 찾기 :
Find
대체 방법 :
Gfind my.regex: Git 추적 파일 ( git ls-files) 만 검색합니다 . 도망자 요청 : https://github.com/tpope/vim-fugitive/issues/132#issuecomment-200749743Gtfind my.regex: 처럼 Gfind 하지만 현재 디렉토리 대신 git 최상위 수준에서 검색Locate somefile: locate버전암호:
function! Find(cmd)
let l:files = system(a:cmd)
if (l:files =~ '^\s*$')
echomsg 'No matching files.'
return
endif
tabedit
set filetype=filelist
set buftype=nofile
" TODO cannot open two such file lists with this. How to get a nice tab label then?
" http://superuser.com/questions/715928/vim-change-label-for-specific-tab
"file [filelist]
put =l:files
normal ggdd
nnoremap <buffer> <Enter> <C-W>gf
execute 'autocmd BufEnter <buffer> lcd ' . getcwd()
endfunction
command! -nargs=1 Find call Find("find . -iname '*'" . shellescape('<args>') . "'*'")
command! -nargs=1 Gfind call Find('git ls-files | grep -E ' . shellescape('<args>'))
command! -nargs=1 Gtfind call Find('git rev-parse --show-toplevel && git ls-files | grep -E ' . shellescape('<args>'))
command! -nargs=1 Locate call Find('locate ' . shellescape('<args>'))
이 기능에만 플러그인이 필요하지 않습니다. 아래 코드 스 니펫이면 충분합니다.
function! FindFiles()
call inputsave()
let l:dir = input("Find file in: ", expand("%:p:h"), "dir")
call inputrestore()
if l:dir != ""
call inputsave()
let l:file = input("File name: ")
call inputrestore()
let l:nf = 'find '.l:dir.' -type f -iname '.l:file.' -exec grep -nH -m 1 ".*" {} \;'
lexpr system(l:nf)
endif
endfunction
nnoremap <silent> <leader>fo :call FindFiles()<CR>
운영:
:args `find . -name '*xml'`
Vim은 백틱으로 쉘 명령을 실행하고 파일 목록을 arglist에 넣고 첫 번째 파일을 엽니 다. 그럼 당신은 사용할 수 있습니다 :args아글리스트 (즉,이 파일이 발견 목록) 등을 볼 수 :n및 :N아글리스트에있는 파일을 통해 앞으로 bacwards 이동합니다. 참조 https://vimhelp.org/editing.txt.html#%7Barglist%7D 및 https://vimhelp.org/editing.txt.html#backtick-expansion
이 플러그인을 사용하면 "경로"에서 파일을 재귀 적으로 찾을 수 있습니다 . 파일 이름에 대한 탭 완성도 지원합니다.