我发现了一个帖子,其中一个人询问如何show the current colorscheme
。我想将此与提示结合起来。也就是说,:colorscheme>CR>
和:colorscheme <C-z><S-Tab>
分别用于显示和提示colorscheme
。我不确定如何将这些组合成一个命令。这是我的尝试,
nnoremap <leader>c :echo g:colors_name \n<CR>
function! Colors()
:colorscheme<cr>
:colorscheme <C-z><S-Tab>
endfunction
nnoremap <leader>c :exec Colors()
nnoremap <leader>c :colorscheme<cr>:colorscheme <C-z><S-Tab>
nnoremap <leader>c :echo g:colors_name<cr><bar>:colorscheme <C-z><S-Tab>
另外,这两项工作:
nnoremap <leader>s :colorscheme<CR>
nnoremap <leader>c :colorscheme <C-z><S-Tab>
(顺便说一句,我使用set wildcharm=<C-z>
和set wildmenu wildmode=list:full
。)
答案 0 :(得分:1)
我不确定你是否可以将它们组合成一个命令。我写了一个函数来查找所有颜色方案打印当前并提示您输入列表。当前颜色方案名称包含在g:colors_name
。
function! PromptList(prompt, list)
let l:copy = copy(a:list)
for i in range(len(l:copy))
let l:copy[i] = (i + 1) . '. ' . l:copy[i]
endfor
let l:ret = inputlist([a:prompt] + l:copy)
if l:ret > 0 && l:ret < len(a:list)
return a:list[l:ret - 1]
else
return ''
endif
endfunction
function! ChangeColorscheme()
" Get a sorted list with the available color schemes.
let l:list = sort(map(
\ split(globpath(&runtimepath, 'colors/*.vim'), '\n'),
\ 'fnamemodify(v:val, ":t:r")'))
let l:prompt = 'Current color scheme is ' . g:colors_name
let l:color = PromptList(l:prompt, l:list)
if l:color != ''
exec 'colorscheme' l:color
endif
endfunction
要使用它,请键入:call ChangeColorscheme()