간단한 솔루션
유형 :setfiletype
(이후 공백) , 다음 Enter 키를 누릅니다 Ctrl-d
.
:help cmdline-completion
vim의 명령 행에서 자동 완성에 대한 자세한 내용 을 참조하십시오 .
복잡한 솔루션
이 솔루션은 'runtimepath'
옵션을 사용하여 사용 가능한 모든 구문 디렉토리를 가져온 다음 해당 디렉토리에서 확장자가 제거 된 vimscript 파일 목록을 가져옵니다. 이것이 가장 안전한 방법은 아니므로 개선을 환영합니다.
function! GetFiletypes()
" Get a list of all the runtime directories by taking the value of that
" option and splitting it using a comma as the separator.
let rtps = split(&runtimepath, ",")
" This will be the list of filetypes that the function returns
let filetypes = []
" Loop through each individual item in the list of runtime paths
for rtp in rtps
let syntax_dir = rtp . "/syntax"
" Check to see if there is a syntax directory in this runtimepath.
if (isdirectory(syntax_dir))
" Loop through each vimscript file in the syntax directory
for syntax_file in split(glob(syntax_dir . "/*.vim"), "\n")
" Add this file to the filetypes list with its everything
" except its name removed.
call add(filetypes, fnamemodify(syntax_file, ":t:r"))
endfor
endif
endfor
" This removes any duplicates and returns the resulting list.
" NOTE: This might not be the best way to do this, suggestions are welcome.
return uniq(sort(filetypes))
endfunction
그런 다음 목록의 모든 값을 인쇄하는 등 원하는 방식으로이 기능을 사용할 수 있습니다. 당신은 그렇게 그렇게 할 수 있습니다 :
for f in GetFiletypes() | echo f | endfor
이것은 아마도 상당히 압축 될 수 있으며 가독성을 위해 이와 같습니다. 여기에 사용 된 모든 기능과 명령을 설명하지는 않지만 여기에 대한 모든 도움말 페이지가 있습니다.
:help 'runtimepath'
:help :let
:help :let-&
:help split()
:help :for
:help expr-.
:help :if
:help isdirectory()
:help glob()
:help fnamemodify()
:help add()
:help uniq()
:help sort()
:setfiletype
(예 :Tab
공백 후) 목록을 볼 수 있습니다 . 전체 목록인지 또는 일부 버퍼 / 파일로 캡처하는 방법을 잘 모르겠습니다.