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
와일드카드를 호출하거나 실행하고(하나를 수행할 시기와 다른 것을 수행할 시기를 알아보려면 아래를 읽으십시오) 출력을 구문 분석합니다.
호출 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
)을 차례로 수행합니다.