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= 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作業中です(他の答えはうまくいきませんでした)。
高速ではありませんが、昔ながらですが、基本的に必要なことを行います。