Vim의 netrw 트리 보기에서 기본적으로 디렉토리를 확장하는 방법은 무엇입니까?

Vim의 netrw 트리 보기에서 기본적으로 디렉토리를 확장하는 방법은 무엇입니까?

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= 3vimrc에서 또는 디렉터리 트리 목록이 나타날 때까지 클릭 하세요 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 작업 중입니다(다른 답변은 효과가 없었습니다).

빠르지는 않지만 구식이지만 기본적으로 원하는 작업을 수행합니다.

관련 정보