Learn Vimscript The Hard Way - 40. Paths
Paths
vim은 텍스트 에디터이고, 텍스트 에디터는 (보통) 텍스트 파일로 작동한다. 텍스트 파일은 filesystem에 존재하고, 어떤 경로에 특정한 파일이 존재한다. vimscript는 경로에 대해 작업할 떄 사용하는 특별한 빌트인 함수들을 가지고 있다.
Absolute Paths
외부 스크립트에서 해당 파일의 절대 경로를 알게 되면 유용한 경우가 있다.
:echom expand('%')
:echom expand('%:p')
:echom fnamemodify('foo.txt', ':p')
첫 번 째 명령어는 현재 수정중인 파일의 상대경로를 보여준다. %
는 "현재 파일"을 의미한다.
두 번 째 명령어는 절대 경로를 보여준다. :p
는 vim에서 절대 경로 string을 의미한다.
세 번 째 명령어는 현재 디렉토리의 foo.txt
의 경로를 반환한다. (실제 파일의 유무와 상관없이) fnamemodify()
명령어는 파일 이름을 다룰 때 사용하는 expand()
보다 더 유연한 명령어이다.
Listing Files
가끔은 특정 경로의 파일 리스트가 필요할 때가 있다.
:echo globpath('.', '*')
현재 디렉토리의 모든 파일과 디렉토리를 반환한다. globpath()
는 newline 캐릭터로 나눠진 string을 반환한다. 만약 리스트가 필요하다면 split()
을 사용하여야 한다.
:echo split(globpath('.', '*'), '\n')
이번에는 리스트가 반환되는 것을 볼 수 있다. 만약 파일명에 newline 캐릭터가 있다면 그것은 직접 처리해야한다. (ㅋㅋㅋ 역시 파일명에 띄어쓰기는 지양하자)
globpath()
의 와일드카드는 예상했던 대로 사용된다.
:echo split(globpath('.', '*.txt'), '\n')
현재 경로에서 .txt
확장자를 가진 파일만 리스트업한다.
**
를 사용해서 해당 경로에서 재귀적으로 하위 경로의 파일까지 나타낼 수 있다.
:echo split(globpath('.', '**'), '\n')
Exerciese
Read
:help expand()
.Read
:help fnamemodify()
.Read
:help filename-modifiers
.Read
:help simplify()
.Read
:help resolve()
.Read
:help globpath()
.Read
:help wildcards
.