好吧,我承认我又无聊了---说白了就是在终端Vim中列出所有的256颜色,用来供配色方案选择。
废话不多说,先上截图如下:
哈哈,感觉还是不错吧,这样就可以慢慢选择啦。
下载链接:http://www.vim.org/scripts/script.php?script_id=3235
安装要求:
1.vim编译了python支持
2.机器上安装了python
调用方式:
把showcolor.vim放到plugin目录下,执行:
:call ShowColorTerm()
当然,上面这个命令是只准在终端下执行的,在gui下执行会报如下错误:
另外,插件也实现了gui下的颜色显示,截图如下:
调用方式:
: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
来进行学习。
依云 on #
果然无聊,呵呵。
我曾拿终端颜色和HTML表示法的对照表使用自己改的colorizer插件弄过这个。想当初我给我的lilydjwg_dark配色添加终端支持的时候就是对照着这样的东西选颜色的,眼睛都看花了……
Reply
Dante on #
哈哈,果然喜欢折腾的人都差不多啊~~
Reply
妞妞 on #
哈哈 VIM博主真幽默
Reply
题叶 on #
想不通为什么 vim 被当成网页来玩,,
没有浏览器类似的渲染引擎啊..
Reply
吴叔 on #
一直很讨厌VIM的ESC,因为太远,今天突然发现C-C等价于ESC,重回博主blog学习,嘿嘿.
Reply
Dante on #
哈,欢迎欢迎,再说键位是可以映射的嘛,自己想换成什么都行~~~
Reply
fromdragon on #
顶楼主,对我比较有用
Reply