Vim netrw插件是否实际显示目录文件的内容?

马丁

netrw插件Vim允许查看目录文件。这里FOW例如,我开始Vimvim .

" ============================================================================
" 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插件只是列出目录的内容,从而给人以打开实际目录文件的印象?

有时很棒

读取目录并不会真正以文件的形式发生。它在readdr系统调用中发生请参阅man 2 readdir将旧的实现作为纯系统调用,以及man 3 readdir将其包装(请不要使用旧的实现)。

但是,Vim'snetrw不会执行任何类似的操作。它只是简单地调用ls或执行globing(请阅读下面的内容,以了解何时执行一次以及何时执行另一次)并解析其输出。

通过配置,netrw您可以选择如何ls远程系统调用它您可以在vimrcSSH和FTP连接中设置“ listing”命令,如下所示(这些是默认设置):

let g:netrw_list_cmd = 'ssh HOSTNAME ls -Fa'
let g:netrw_ftp_list_cmd = 'ls -lF'

(您甚至可以将其设置为与没有lsFTP系统的FTP系统不同的东西ls,是的,有一些罕见的FTP系统没有它。)

对于本地列表,请 netrw执行遍历,然后调用getftype()以装饰文件(/用于目录,@用于链接等)。autoload/netrw.vims: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)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章