シンプルなソリューション
タイプ:setfiletype
(後でスペース付き)、押し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
、スペースの後に)を試みると、リストを表示できます。完全なリストなのか、それをバッファ/ファイルにキャプチャする方法がわからない。