有効な配色をリストしますか?


15

:colorschemeコマンドについて知りました。Vimから有効な配色のリストを取得する方法はありますか?インターネット上のどこかのリストからではなく、Vim内からこれを実行できるようにしたいと思います。

回答:


17

最も簡単な方法は、:help c_Ctrl-d後に使用すること:colorschemeです。

したがって、:colorschemeCtrl-d使用可能なカラースキームを出力します。


Windowsでも動作しました!
同型

10

リストを表示する別の方法は、set wildmenuです。これにより、:colorscheme+ space+の後にtab、完了のリストが表示され、矢印キーまたはCtrl-Nおよびで選択することもできCtrl-Pます。これは、colorschemeだけでなく、他のcmdline補完でも機能します。動作は影響を受けwildmode、デフォルト値に設定する方が適切ですfull


3

Vimscriptでこれを行いたい場合は、getcompletion()関数を使用して配色のリストを取得できます。

let c = getcompletion('', 'color')
echo c

これは、ファイルシステムをスキャンする既存のVimscriptの回答よりも少し簡単です。

詳細:help getcompletion()を参照してください。


2

他の回答は、どのカラースキームが利用できるかを示すインタラクティブな方法を示していますが、vimscriptで使用できるリストを取得する方法については誰も言及していません。これはこの質問に対する私の答えの適応です。

このソリューションでは、この'runtimepath'オプションを使用して、使用可能なすべてのcolorschemeディレクトリを取得し、それらのディレクトリ内のvimscriptファイルのリストを取得し、拡張子を削除します。これは最も安全な方法ではない可能性があるため、改善を歓迎します。

function! GetColorschemes()
    " 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 colorschemes that the function returns
    let colorschemes = []

    " Loop through each individual item in the list of runtime paths
    for rtp in rtps
        let colors_dir = rtp . "/colors"
        " Check to see if there is a colorscheme directory in this runtimepath.
        if (isdirectory(colors_dir))
            " Loop through each vimscript file in the colorscheme directory
            for color_scheme in split(glob(colors_dir . "/*.vim"), "\n")
                " Add this file to the colorscheme list with its everything
                " except its name removed.
                call add(colorschemes, fnamemodify(color_scheme, ":t:r"))
            endfor
        endif
    endfor

    " This removes any duplicates and returns the resulting list.
    return uniq(sort(colorschemes))
endfunction

その後、vimscriptでこの関数によって返されるリストを使用できます。たとえば、各カラースキームを単純にエコーできます。

for c in GetColorschemes() | echo c | 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()

-1

これを試すことができます

:colorscheme、次にspaceキーを押してから、tabキーを押します。


3
それはあなたに依存している注意wildmenuしてwildchar設定し、この答えは基本的に同じであることをtivnの1
statox
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.