Vimのnetrwツリービューでデフォルトでディレクトリを拡張する方法は?

Vimのnetrwツリービューでデフォルトでディレクトリを拡張する方法は?

vimrcに以下を追加して、デフォルトでnetrwにツリービューを使用させることができました。

let g:netrw_liststyle=3

しかし、基本的にサブディレクトリを拡張する方法がわかりません。方法はありますか?

答え1

すべてのサブディレクトリを読むことは高価な作業であり、netrwのオープン速度を大幅に低下させます。ツリー表示はいくつかの表示モードの1つ(デフォルトではない)にすぎないため、そのようなコマンドがない理由です。私は次のことを試しました(<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作業中です(他の答えはうまくいきませんでした)。

高速ではありませんが、昔ながらですが、基本的に必要なことを行います。

関連情報