前几天,依云兄在我博客上推荐了一款插件gui2term.py,用了之后立马叫好,苦于一直没有时间,所以今天特意推荐一下。

这款插件实现了将gvim的配色转化成终端配色的解决方案。下载链接
相信不少朋友和我一样,需要在windows和终端下同时工作,而工具都是vim,所以,保持配色的相同就显得非常重要啦!

我们拿著名的desert配色来测试一下:
1.把desert.vim改成 test.vim,和gui2term.py放到同一目录。打开test.vim,将let g:colors_name=”desert” 改为 let g:colors_name=”test”,并删除掉它的终端配色。
2.将vim根目录下的rgb.txt放到和gui2term.py同一目录。
3.执行./gui2term.py test.vim test2.vim
4.打开test2.vim,将会发现终端配色代码已经生成啦

code_color
放最终效果图
windows下gvim:

desert_gui

xshell下vim:

desert_x

好吧,我甚至觉得xshell下的vim要比windows下的gvim好看……

Then,enjoy it!

让Vim(gvim)更好的支持javascript编程

最近工作比较忙,所以一直没有时间写vim相关的文章,今天写一篇,以飨读者。 貌似前台开发的同事都是不太喜欢用vim的,而喜欢用editplus,emeditor之类的,说...

阅读全文

让vim在终端下的配色亮起来!

各位在终端下用vim的朋友们~~我想我绝对给大家带来了一个福音~~哈哈 想必每个人都受不了终端下vim那阴暗、简陋的配色吧,而且就算用 :color xxx 来选择那些支...

阅读全文

Vim(gvim)配色方案推荐

 如果经常用vim进行编辑,那么一款好的vim配色就是必然的啦,今天我们就来介绍一下我常用的几款配色。  1.saber   下载 2.blackdust 也是一款黑色背景的...

阅读全文

43则回应给“强烈推荐–将GUI配色转化为终端配色的VIM插件–gui2term.py”

  1. 眼泪哗哗地说道:

    终于看到这个插件了…..

    [回复]

    Dante 回复:

    哈哈,我当时也花了好长时间寻找这个插件呢~~~

    [回复]

  2. 依云说道:

    终于看到有回复了。。。
    其实我也觉得终端下的比GUI的漂亮,无奈终端下用 Alt 组合键让 Esc 的时候不方便。
    其实在 vim.org 上有很多把 GUI 配色转成终端的,但它们都是“实时”的,在载入配色时设置而不改写原文件,按 RGB 算的近似颜色也不准确(比如 spring 的浅绿底色变成了灰色),所以就用自己刚学的 Python 写了这个。

    [回复]

    Dante 回复:

    嘿嘿,这个插件可是解决了我多年萦绕在心头的大问题呢~~
    其实我不懂python……,一开始还担心自己用不了,结果发现公司的服务器上居然预装了python的解释器啦,哈哈,真是幸运~~

    [回复]

    依云 回复:

    一般的 Linux 都会装有 Python 的。你也不一定非要在目标机器上面运行啊。随便找个能跑 Python 的地方转换完毕拿到转换后的文件就可以了。不过你要是在 Windows 下跑估计会有乱码,等到下次更新它时再解决了。

    [回复]

    Dante 回复:

    哈哈,我就是在公司的开发机上转换的哦,一般也不会在windows下做什么开发工作。
    哈哈,期待你更新最新版本~~~

    [回复]

  3. 君临天下说道:

    今晚尝试了 很受用!

    [回复]

    juagel 回复:

    能否将转换好的文件发我一份???937056191@qq.com 谢了。。。

    [回复]

  4. fuadam说道:

    为什么我用了这个以后cmd里面的vim就花屏了呢,还有个问题就是输入的中文显示不出来

    [回复]

    Dante 回复:

    呃,这个在windows下的cmd下用确实会有问题哦,所以其实这个配置是给linux下的终端用的……windows下面那个就是个伪终端,很鸡肋……

    [回复]

    fuadam 回复:

    我想用这个的主要原因是想,利用cygwin+screen,来实现vim和shell在同一个窗口里面,用着方便

    [回复]

    依云 回复:

    在Linux的screen下色彩也有些不对的,暂时不知道原因。

    [回复]

  5. Ling说道:

    哇,这东西,太神了!是不是只要把这个更新好的test.vim放到color下就能用啦?老大能不能直接发一份给我呀?

    [回复]

  6. [...] 强烈推荐–将GUI配色转化为终端配色的VIM插件–gui2term.py [...]

  7. 球猫说道:

    试用了一下,发现颜色变得很利害,觉得是距离定义有问题(比rgb欧式距离还糟糕。。。)

    改成圆锥hsv距离,补丁:

    — gui2term2.py 2011-01-11 12:10:19.000000000 +0800
    +++ gui2term.py 2011-01-11 12:05:15.000000000 +0800
    @@ -4,6 +4,7 @@

    import os, sys, re
    import colorsys
    +import math

    termcolor = { 16: ‘#000000′,
    17: ‘#00005f’,
    @@ -265,6 +266,25 @@
    re_hexcolor = re.compile(‘^#[0-9a-fA-F]{6}$’)
    re_hiline = re.compile(‘^\s*hi\w*\s+[A-Z]\w+’)
    re_name = re.compile(‘(?<=\s)[A-Z]\w+(?=\s+gui)')
    +
    +def x2f (s):
    + return int(s, 16)/255.0
    +
    +def color_norm (c):
    + return x2f(c[1:3]), x2f(c[3:5]), x2f(c[5:])
    +
    +
    +def dis (h1, s1, v1, h2, s2, v2):
    + _2pi = math.pi*2
    + x1 = s1*v1*math.cos(h1*_2pi)
    + y1 = s1*v1*math.sin(h1*_2pi)
    + z1 = v1
    + x2 = s2*v2*math.cos(h2*_2pi)
    + y2 = s2*v2*math.sin(h2*_2pi)
    + z2 = v2
    + return (x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2
    +
    +
    class color:
    def __init__(self, r=0, g=0, b=0):
    self.r = r
    @@ -277,11 +297,12 @@
    # TODO 更好的计算法
    best_match= 0
    smallest_distance = 10000000
    - for c in range(16,255):
    - # d = (int(termcolor[c][1:3], 16) – self.r) ** 2 + (int(termcolor[c][3:5], 16) – self.g) ** 2 + (int(termcolor[c][5:], 16) – self.b) ** 2
    - a = colorsys.rgb_to_hsv(float(int(termcolor[c][1:3], 16)), float(int(termcolor[c][3:5], 16)), float(int(termcolor[c][5:], 16)))
    - b = colorsys.rgb_to_hsv(float(self.r), float(self.g), float(self.b))
    - d = (a[0] – b[0]) ** 2 + (a[1] – b[1]) ** 2 + ((a[2] – b[2]) / 255.0) ** 2
    + for c in range(16,256):
    + #d = (int(termcolor[c][1:3], 16) – self.r) ** 2 + (int(termcolor[c][3:5], 16) – self.g) ** 2 + (int(termcolor[c][5:], 16) – self.b) ** 2
    + a = colorsys.rgb_to_hsv(* color_norm(termcolor[c]))
    + b = colorsys.rgb_to_hsv(self.r/255.0, self.g/255.0, self.b/255.0)
    + #d = (a[0] – b[0]) ** 2 + (a[1] – b[1]) ** 2 + (a[2] – b[2]) ** 2
    + d = dis(* (a+b))
    if d < smallest_distance:
    smallest_distance = d
    best_match = c

    [回复]

    Dante 回复:

    哈哈,太好啦~~
    评论对代码的支持不是很好哦,能否提供一下文件下载,或者发到我邮箱?

    依云看到的话也可以试一下哦

    [回复]

    依云 回复:

    谢谢,我对颜色的计算没什么概念,所以算法是自己瞎猜的。。。

    这个算法我将在下个版本加入。(不过我不知道下个版本什么时候发布。。)

    另外,Dante 有时间赶紧给评论加上

     标签的支持吧。

    [回复]

    依云 回复:

    评论支持 <pre> 标签?那应该提示下下的。。。

    [回复]

    Dante 回复:

    汗,我也才发现。。。

    [回复]

    Dante 回复:

    哈哈,看我上面的评论,配色都有~~
    方法如下:
    <pre lang="cpp" line="1">
    int main(int argc, const char *argv[])
    {
    printf("真的支持!");
    return 0;
    }
    </pre>

    [回复]

    Dante 回复:

    依云,我把你的博客加到友链了哈

    [回复]

    依云 回复:

    Thanks!

    [回复]

    依云 回复:

    更新了,不过没采用这个算法,感觉效果不够理想。

    [回复]

  8. 球猫说道:

    我也是瞎猜的。。。

    [回复]

  9. lixf说道:

    能不能把转换好的配色打包发给我。谢谢。43552719@qq.com

    [回复]

    Dante 回复:

    不好意思啊,很早的文章了,转好的文件都已经扔了,文章已经写了转化方法,自己搞一下也很快的。

    [回复]

    lixf 回复:

    一定要python3吗?我这里是2.5

    [回复]

    Dante 回复:

    python2.5就行

    [回复]

    lixf 回复:

    python2.5.
    gui2term.py1.0
    desert.vim
    终端Putty,试用失败,颜色出不来.

    [回复]

    依云 回复:

    请设置 $TERM 环境变量或者 term 选项以让 Vim 知道它可以使用 256 色。

    [回复]

  10. juagel说道:

    终端下显示的颜色和博主的颜色不一样。。。“删除掉它的终端配色”这是什么意思???

    [回复]

    Dante 回复:

    就是将cterm开头的那些设置删掉哦

    [回复]

  11. Ace说道:

    并删除掉它的终端配色 这是什么意思?

    [回复]

    Dante 回复:

    就是将cterm开头的那些设置删掉哦~~

    [回复]

    udonmai 回复:

    马桶哥!

    [回复]

    Ace 回复:

    我靠 好巧啊

    [回复]

  12. Shmech说道:

    我生成的colortheme在gnome-terminal中能用,但在urxvt下无效

    [回复]

    依云 回复:

    我这里两个下面都可以用啊。你设置了 ‘term’ 选项或者 ‘t_Co’ 选项没有?$TERM 环境变量的值是?

    另外,gui2term.py 更新到 3.0 版本了,使用了更好的算法(基于 CIELab 色彩空间),在寻找 rgb.txt 方面会尝试调用 locate 命令了。

    [回复]

  13. _______小过期说道:

    问一下把第一步并删除掉它的终端配色指的是把
    ” color terminal definitions 后面的定义删掉吗?我尝试了一下,把文件放在colors目录下然后修改了vimrc文件还是没有用 T_T

    [回复]

    Dante 回复:

    凡是term* 类型的都删掉哈

    [回复]

    _______小过期 回复:

    3X so much!

    [回复]

  14. Iceway说道:

    我用你的介绍方法, 把/usr/share/vim/vim73/colors/desert.vim转换之后, 的确和gvim中的配色一样了。
    只是还有一点问题想请教。
    看到你文章最后的效果图中, 代码里的变量和一些函数都是彩色的。 比如,变量test和printf函数都是绿色的。另外你的define的宏名称等都是有特殊颜色的。我的gvim和vim都没有这些。你的这些变量名,函数名等的彩色是怎么弄出来的?谢谢!

    [回复]

  15. suck007说道:

    我下载的最新版,rgb.txt到当前目录下,结果还是提示找不到rgb.txt

    见鬼。。。。。。。。

    [回复]

发表评论