유효한 색 구성표를 나열 하시겠습니까?


15

방금 :colorscheme명령 에 대해 알게되었습니다 . Vim에서 유효한 색 구성표 목록을 얻을 수있는 방법이 있습니까? 인터넷 어딘가의 목록이 아닌 Vim 내 에서이 작업을 수행하고 싶습니다.

답변:



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에서이 함수가 반환 한 thie list를 사용할 수 있습니다. 예를 들어, 각 색상 구성표를 간단히 에코 할 수 있습니다.

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
이는 귀하 wildmenuwildchar설정에 따라 다르며이
statox
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.