netrw
プラグインを使用すると、Vim
人々はカタログファイルを見ることができます。ここでVim
例を見てみましょうvim .
。
" ============================================================================
" Netrw Directory Listing (netrw v155)
" /root/vim/code/files
" Sorted by name
" Sort sequence: [\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$
" Quick Help: <F1>:help -:go up dir D:delete R:rename s:sort-by x:special
" ==============================================================================
../
./
letters/
mvc/
.chapters
a.txt
b.txt
mvc_paths.vim
Vim
ディレクトリファイルの内容を実際に見ることができますか?たとえばcat .
、、、less .
などhexdump .
はすべて. is a directory
エラーメッセージで失敗します。それともnetrw
プラグインがディレクトリの内容だけを一覧表示し、実際のディレクトリファイルが開いているように見えますか?
答え1
ディレクトリの読み込みは実際にはファイルでは行われません。readdr
システムコールで発生します。以前の実装とラッパーをman 2 readdir
純粋なシステムコールとして参照してください(以前の実装を使用しないでください)。man 3 readdir
しかし、Vimはnetrw
同様のことをしません。ls
ワイルドカードを呼び出すか実行するだけで(1つを実行するタイミングとは異なるものを実行するタイミングを確認するには、以下を読んでください)、出力を解析します。
呼び出しnetrw
方法を選択できる構成ls
リモートシステム。次のようにSSHおよびFTP接続でリストコマンドを設定できますvimrc
(デフォルト設定).
let g:netrw_list_cmd = 'ssh HOSTNAME ls -Fa'
let g:netrw_ftp_list_cmd = 'ls -lF'
ls
(FTPなしのシステムとは異なる値に設定することもできますls
。もちろん、FTPなしのシステムもあります。)
~のため地域リスト netrw
ワイルドカードを実行し、呼び出してgetftype()
ファイルを装飾します(/
ディレクトリ、@
リンクなど)。autoload/netrw.vim
プロセス中にs:LocalListing()
以下を実行してください。
let dirname = b:netrw_curdir
let dirnamelen = strlen(b:netrw_curdir)
let filelist = s:NetrwGlob(dirname,"*",0) " here is the globbing of `*`
let filelist = filelist + s:NetrwGlob(dirname,".*",0) " and here `.*`
次に、getftype()
各ファイルを呼び出しますfilelist
。
要約すると、netrw
Vimはこのglob()
機能を持っているので、Vimはglob
呼び出し(man 3 glob
)を順番に実行します。