列出Vim的所有颜色-showcolor.vim

列出Vim的所有颜色-showcolor.vim | Vimer的程序世界

列出Vim的所有颜色-showcolor.vim

 

好吧,我承认我又无聊了---说白了就是在终端Vim中列出所有的256颜色,用来供配色方案选择。
废话不多说,先上截图如下:

1

哈哈,感觉还是不错吧,这样就可以慢慢选择啦。
下载链接:http://www.vim.org/scripts/script.php?script_id=3235
安装要求:

1.vim编译了python支持
2.机器上安装了python

调用方式:
把showcolor.vim放到plugin目录下,执行:

:call ShowColorTerm()

当然,上面这个命令是只准在终端下执行的,在gui下执行会报如下错误:

2

另外,插件也实现了gui下的颜色显示,截图如下:

3

调用方式:

:call ShowColor(0x00,0xFF,15)

三个参数分别是:起始颜色,终止颜色,每行颜色个数。
有3个参数的原因是,因为全部列出所有的配色是不可能的(即使用python,vim也会卡死),所以必须指定范围。

列出代码如下:

function! ShowColor(beginColor,endColor,lineSize) 
    if(!has('gui_running'))
        echohl WarningMsg | echo "Must use this function in gui." | echohl None
        return
    endif
python << EOF
import vim
def LinkColor(xColor,beginColor,endColor):
    strColor = '#%06x' % xColor
    matchName = 'scname%06x' % xColor
    strFgColor = ''
    if xColor > (0xFFFFFF-0x000000)/2:
        strFgColor = '#%06x' % 0x000000
    else:
        strFgColor = '#%06x' % 0xFFFFFF
    cmdHighLight = 'hi %s guifg=%s guibg=%s' % (matchName,strFgColor,strColor)
    cmdMatch = 'syn match %s "%s"' % (matchName,strColor)
    vim.command(cmdMatch)
    vim.command(cmdHighLight)
def PyShowColor():
    beginColor = int(vim.eval('a:beginColor'),16)
    endColor = int(vim.eval('a:endColor'),16)
    lineSize = int(vim.eval('a:lineSize'),10)
    curColor = beginColor
    while(True):
        lColor = []
        for i in range(0,lineSize):
            lColor.append('#%06x' % curColor)
            LinkColor(curColor,beginColor,endColor)
            curColor += 1
            if curColor > endColor:
                break
        vim.current.buffer.append(' '.join(lColor))
        vim.current.buffer.append('\n')
        if curColor > endColor:
            break
vim.current.buffer[:]=None
PyShowColor()
EOF
endfunction
function! ShowColorTerm() 
    if(has('gui_running'))
        echohl WarningMsg | echo "Must use this function in term." | echohl None
        return
    endif
python << EOF
beginColor = 0
endColor = 255
import vim
def LinkColor(xColor):
    matchName = 'scname%u' % xColor
    fgColor = 0
    if xColor > (endColor-beginColor)/2:
        fgColor = beginColor
    else:
        fgColor = endColor
    cmdHighLight = 'hi %s ctermfg=%u ctermbg=%u' % (matchName,fgColor,xColor)
    cmdMatch = 'syn match %s "%03u"' % (matchName,xColor)
    vim.command(cmdMatch)
    vim.command(cmdHighLight)
def PyShowColor():
    lineSize = 16
    curColor = beginColor
    while(True):
        lColor = []
        for i in range(0,lineSize):
            lColor.append('%03u' % curColor)
            LinkColor(curColor)
            curColor += 1
            if curColor > endColor:
                break
        vim.current.buffer.append(' '.join(lColor))
        vim.current.buffer.append('\n')
        if curColor > endColor:
            break
vim.current.buffer[:]=None
PyShowColor()
EOF
endfunction

另外,用python来写vim插件真的比vim本身的脚本好很多,可以在vim中直接输入:

 

:h python-vim

来进行学习。

posted on 2012-03-11 20:06  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/03/11/2390577.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值