![Vim의 netrw 트리 보기에서 기본적으로 디렉토리를 확장하는 방법은 무엇입니까?](https://linux55.com/image/65146/Vim%EC%9D%98%20netrw%20%ED%8A%B8%EB%A6%AC%20%EB%B3%B4%EA%B8%B0%EC%97%90%EC%84%9C%20%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EB%A5%BC%20%ED%99%95%EC%9E%A5%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
vimrc에 다음을 추가하여 기본적으로 netrw에서 트리 보기를 사용하도록 할 수 있었습니다.
let g:netrw_liststyle=3
그런데 기본적으로 하위 디렉터리를 확장하는 방법을 모르겠습니다. 방법이 있습니까?
답변1
모든 하위 디렉토리를 읽는 것은 비용이 많이 드는 작업이며 netrw의 열기 속도를 크게 저하시킵니다. 트리 표시는 여러 표시 모드 중 하나(기본값이 아님)일 뿐이므로 그러한 명령이 없는 이유일 것입니다. 나는 다음과 같은 것을 시도했습니다( <Enter>
각 디렉터리 줄에서 매핑을 트리거하여 열었습니다).
:global/^│ /exe "normal \<CR>"
그러나 불행하게도 그것은 효과가 없었습니다.
플러그인 대안
이것NERDTree 플러그인비슷하다회로망이지만 트리 표시(사이드바)를 중심으로 구축되었습니다. 따라서 하위 트리를 여는 명령도 있습니다(그러나 netrw만큼 느립니다).
답변2
이것은 작동합니다:
function ExpandAllDirectories()
call cursor(0,0)
let found = 1
while found != 0
" match lines with expand-able directories
" do not wrap around to the start of the file
let found = search('^|.*\/$', 'W')
if found != 0
execute "normal \<CR>"
endif
endwhile
endfunction
이렇게 하면 축소된 (하위)디렉토리가 모두 확장됩니다.
위 코드를 사용하려면 파일에 저장하세요 xpand.vim
. 예: netrw를 사용하여 폴더를 엽니다(아마도 내용이 많지 않을 수도 있습니다!) $ vim /some/folder/
.
netrw가 모든 하위 폴더가 닫힌 트리 디렉토리 목록을 표시하는지 확인하십시오(기본/초기 트리 보기). let g:netrw_liststyle= 3
vimrc에서 또는 디렉터리 트리 목록이 나타날 때까지 클릭 하세요 i
. :help netrw-i
자세히보다.
어쨌든 일단 Vim에서 트리를 본 후에는 를 :source xpand.vim
사용하여 코드를 로드한 다음 :call ExpandAllDirectories()
실행할 수 있습니다.
내 생각에는 NERDTree가 더 나은 것 같습니다. netrw와 함께 작동하기를 원합니다. 정말 느립니다... 내가 멍청한 짓을 하고 있다면 알려주세요(물론 NERDTree 사용을 거부하는 것 외에는 말이죠). 아마도 (내) Vimscript가 느리기 때문일 수도 있습니다. 명령 tree
줄 프로그램은 매우 빠르므로 이 접근 방식은 확실히 최적화될 수 있습니다(아마도 다른 언어에서도).
답변3
나는 이것을 가지고있다 ~/.vimrc
:
function SideDirTree()
Lexplore
if bufname(winbufnr(0)) == 'NetrwTreeListing'
2
"while search('^\([|│] \)\+.\+\/$', '', line('$')) " (no recursion limit)
while search('^\([|│] \)\{1,3}[^|│].*/$', '', line('$')) " (recursion limited to 3 subdirs)
execute "normal \<CR>"
endwhile
3
endif
endfunction
noremap <F9> :call SideDirTree()<CR>
ViM/GViM 8.2 작업 중입니다(다른 답변은 효과가 없었습니다).
빠르지는 않지만 구식이지만 기본적으로 원하는 작업을 수행합니다.