话不多说,上代码如下:

  1. " ___ __) ) ___ ______)
  2. " (, |/ (__/_____) /) (, / /) /)
  3. " | _/_ _ __ ____ / ___// _____ / _ (/_ // _
  4. " ) /|_ (___(/_/ (_/ / /_ (_/ (_)(/_(_)/ (_ ) / (_(_/_) (/__(/_
  5. " (_/ (______) (_/
  6. "
  7. " guns <self@sungpae.com>
  8.  
  9. " Version: 1.6
  10. " License: MIT
  11. " Homepage: http://github.com/guns/xterm-color-table.vim
  12. "
  13. " NOTES:
  14. "
  15. " * Provides command :XtermColorTable, as well as variants for different splits
  16. " * Xterm numbers on the left, equivalent RGB values on the right
  17. " * Press `#` to yank current color (shortcut for yiw)
  18. " * Press `t` to toggle RGB text visibility
  19. " * Press `f` to set RGB text to current color
  20. " * Buffer behavior similar to Scratch.vim
  21. "
  22. " INSPIRED BY:
  23. "
  24. " * http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html
  25. " * http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim
  26. " * http://www.vim.org/scripts/script.php?script_id=664
  27.  
  28. " We have a dependency on buffer-local autocommands
  29. if version < 700
  30. echo 'FAIL: XtermColorTable requires vim 7.0+'
  31. finish
  32. endif
  33.  
  34. let s:bufname = '__XtermColorTable__'
  35.  
  36. if !exists('g:XtermColorTableDefaultOpen')
  37. let g:XtermColorTableDefaultOpen = 'split'
  38. endif
  39.  
  40. command! XtermColorTable execute 'call <SID>XtermColorTable(g:XtermColorTableDefaultOpen)'
  41. command! SXtermColorTable call <SID>XtermColorTable('split')
  42. command! VXtermColorTable call <SID>XtermColorTable('vsplit')
  43. command! TXtermColorTable call <SID>XtermColorTable('tabnew')
  44. command! EXtermColorTable call <SID>XtermColorTable('edit')
  45. command! OXtermColorTable call <SID>XtermColorTable('edit') | only
  46.  
  47. augroup XtermColorTable "{{{
  48. autocmd!
  49. autocmd BufNewFile __XtermColorTable__ call <SID>ColorTable()
  50. autocmd ColorScheme * silent! doautoall XtermColorTableBuffer ColorScheme
  51. augroup END "}}}
  52.  
  53. function! <SID>XtermColorTable(open) "{{{
  54. let bufid = bufnr(s:bufname)
  55. let winid = bufwinnr(bufid)
  56.  
  57. if bufid == -1
  58. " Create new buffer
  59. execute a:open.' '.s:bufname
  60. return
  61. elseif winid != -1 && winnr('$') > 1
  62. " Close extant window
  63. execute winid.'wincmd w' | close
  64. endif
  65.  
  66. " Open extant buffer
  67. execute a:open.' +buffer'.bufid
  68. endfunction "}}}
  69.  
  70. function! <SID>ColorTable() "{{{
  71. let rows = []
  72.  
  73. call add(rows, <SID>ColorRow(0, 7))
  74. call add(rows, <SID>ColorRow(8, 15))
  75. "call add(rows, '')
  76.  
  77. for lnum in range(16, 248, 8)
  78. call add(rows, <SID>ColorRow(lnum, lnum + 7))
  79. if lnum == 24
  80. call add(rows, '')
  81. call add(rows, ' -------------------------------------------------------------------------------------------------------')
  82. call add(rows, '')
  83. endif
  84. if lnum == 56
  85. call add(rows, '')
  86. endif
  87. if lnum == 88
  88. call add(rows, '')
  89. call add(rows, ' -------------------------------------------------------------------------------------------------------')
  90. call add(rows, '')
  91. endif
  92. if lnum == 120
  93. call add(rows, '')
  94. endif
  95. if lnum == 152
  96. call add(rows, '')
  97. call add(rows, ' -------------------------------------------------------------------------------------------------------')
  98. call add(rows, '')
  99. endif
  100. if lnum == 184
  101. call add(rows, '')
  102. endif
  103. if lnum == 216
  104. call add(rows, '')
  105. call add(rows, ' -------------------------------------------------------------------------------------------------------')
  106. call add(rows, '')
  107. endif
  108. endfor
  109.  
  110. if &modifiable
  111. call append(0, rows)
  112. call append(len(rows) + 1, <SID>HelpComment())
  113. call <SID>SetBufferOptions()
  114. endif
  115. endfunction "}}}
  116.  
  117. function! <SID>ColorRow(start, end) "{{{
  118. return join(map(range(a:start, a:end), '<SID>ColorCell(v:val)'))
  119. endfunction "}}}
  120.  
  121. function! <SID>ColorCell(n) "{{{
  122. let rgb = s:xterm_colors[a:n]
  123.  
  124. " Clear extant values
  125. execute 'silent! syntax clear fg_'.a:n
  126. execute 'silent! syntax clear bg_'.a:n
  127.  
  128. execute 'syntax match fg_'.a:n.' " '.a:n.' " containedin=ALL'
  129. execute 'syntax match bg_'.a:n.' "'. rgb .'" containedin=ALL'
  130.  
  131. call <SID>HighlightCell(a:n, -1)
  132.  
  133. return printf(' %3s %7s', a:n, rgb)
  134. endfunction "}}}
  135.  
  136. function! <SID>HighlightCell(n, bgf) "{{{
  137. let rgb = s:xterm_colors[a:n]
  138.  
  139. " bgf has three states:
  140. " -2) black or white depending on intensity
  141. " -1) same as background
  142. " 0+) xterm color value
  143. if a:bgf == -2
  144. let sum = 0
  145. for val in map(split(substitute(rgb, '^#', '', ''), '\v\x{2}\zs'), 'str2nr(v:val, 16)')
  146. " TODO: does Vimscript have a fold/reduce function?
  147. let sum += val
  148. endfor
  149. let bgf = sum > (0xff * 1.5) ? 0 : 15
  150. elseif a:bgf == -1
  151. let bgf = a:n
  152. else
  153. let bgf = a:bgf
  154. endif
  155.  
  156. " Clear any extant values
  157. execute 'silent! highlight clear fg_'.a:n
  158. execute 'silent! highlight clear bg_'.a:n
  159.  
  160. execute 'highlight fg_'.a:n.' ctermfg='.a:n.' guifg='.rgb
  161. execute 'highlight bg_'.a:n.' ctermbg='.a:n.' guibg='.rgb
  162. execute 'highlight bg_'.a:n.' ctermfg='.bgf.' guifg='.s:xterm_colors[bgf]
  163. endfunction "}}}
  164.  
  165. function! <SID>SetBufferOptions() "{{{
  166. setlocal buftype=nofile bufhidden=hide buflisted
  167. setlocal nomodified nomodifiable noswapfile readonly
  168. setlocal nocursorline nocursorcolumn
  169. setlocal iskeyword+=#
  170.  
  171. let b:XtermColorTableRgbVisible = 0
  172. let b:XtermColorTableBGF = -2
  173.  
  174. nmap <silent><buffer> # yiw:echo 'yanked: '.@"<CR>
  175. nmap <silent><buffer> t :call <SID>ToggleRgbVisibility()<CR>
  176. nmap <silent><buffer> f :call <SID>SetRgbForeground(expand('<cword>'))<CR>
  177.  
  178. " Colorschemes often call `highlight clear';
  179. " register a handler to deal with this
  180. augroup XtermColorTableBuffer
  181. autocmd! * <buffer>
  182. autocmd ColorScheme <buffer> call <SID>HighlightTable(-1)
  183. augroup END
  184. endfunction "}}}
  185.  
  186. function! <SID>HelpComment() "{{{
  187. " we have to define our own comment type
  188. silent! syntax clear XtermColorTableComment
  189. syntax match XtermColorTableComment ';.*'
  190. highlight link XtermColorTableComment Comment
  191.  
  192. let lines = []
  193. call add(lines, "; # to copy current color (yiw)")
  194. call add(lines, "; t to toggle RGB visibility")
  195. call add(lines, "; f to set RGB foreground color")
  196.  
  197. return lines
  198. endfunction "}}}
  199.  
  200. function! <SID>ToggleRgbVisibility() "{{{
  201. let bgf = b:XtermColorTableRgbVisible ? -1 : b:XtermColorTableBGF
  202. let b:XtermColorTableRgbVisible = (b:XtermColorTableRgbVisible + 1) % 2
  203.  
  204. call <SID>HighlightTable(bgf)
  205. endfunction "}}}
  206.  
  207. function! <SID>HighlightTable(bgf) "{{{
  208. for val in range(0, 0xff) | call <SID>HighlightCell(val, a:bgf) | endfor
  209. endfunction "}}}
  210.  
  211. function! <SID>SetRgbForeground(cword) "{{{
  212. if len(a:cword)
  213. let sname = synIDattr(synID(line('.'), col('.'), 0), 'name')
  214. let b:XtermColorTableBGF = substitute(sname, '\v^\w+_', '', '') + 0
  215. else
  216. let b:XtermColorTableBGF = -2
  217. endif
  218.  
  219. if b:XtermColorTableRgbVisible
  220. call <SID>HighlightTable(b:XtermColorTableBGF)
  221. else
  222. call <SID>ToggleRgbVisibility()
  223. endif
  224. endfunction "}}}
  225.  
  226. """ Xterm 256 color dictionary {{{
  227.  
  228. let s:xterm_colors = {
  229. \ '0': '#000000', '1': '#800000', '2': '#008000', '3': '#808000', '4': '#000080',
  230. \ '5': '#800080', '6': '#008080', '7': '#c0c0c0', '8': '#808080', '9': '#ff0000',
  231. \ '10': '#00ff00', '11': '#ffff00', '12': '#0000ff', '13': '#ff00ff', '14': '#00ffff',
  232. \ '15': '#ffffff', '16': '#000000', '17': '#00005f', '18': '#000087', '19': '#0000af',
  233. \ '20': '#0000df', '21': '#0000ff', '22': '#005f00', '23': '#005f5f', '24': '#005f87',
  234. \ '25': '#005faf', '26': '#005fdf', '27': '#005fff', '28': '#008700', '29': '#00875f',
  235. \ '30': '#008787', '31': '#0087af', '32': '#0087df', '33': '#0087ff', '34': '#00af00',
  236. \ '35': '#00af5f', '36': '#00af87', '37': '#00afaf', '38': '#00afdf', '39': '#00afff',
  237. \ '40': '#00df00', '41': '#00df5f', '42': '#00df87', '43': '#00dfaf', '44': '#00dfdf',
  238. \ '45': '#00dfff', '46': '#00ff00', '47': '#00ff5f', '48': '#00ff87', '49': '#00ffaf',
  239. \ '50': '#00ffdf', '51': '#00ffff', '52': '#5f0000', '53': '#5f005f', '54': '#5f0087',
  240. \ '55': '#5f00af', '56': '#5f00df', '57': '#5f00ff', '58': '#5f5f00', '59': '#5f5f5f',
  241. \ '60': '#5f5f87', '61': '#5f5faf', '62': '#5f5fdf', '63': '#5f5fff', '64': '#5f8700',
  242. \ '65': '#5f875f', '66': '#5f8787', '67': '#5f87af', '68': '#5f87df', '69': '#5f87ff',
  243. \ '70': '#5faf00', '71': '#5faf5f', '72': '#5faf87', '73': '#5fafaf', '74': '#5fafdf',
  244. \ '75': '#5fafff', '76': '#5fdf00', '77': '#5fdf5f', '78': '#5fdf87', '79': '#5fdfaf',
  245. \ '80': '#5fdfdf', '81': '#5fdfff', '82': '#5fff00', '83': '#5fff5f', '84': '#5fff87',
  246. \ '85': '#5fffaf', '86': '#5fffdf', '87': '#5fffff', '88': '#870000', '89': '#87005f',
  247. \ '90': '#870087', '91': '#8700af', '92': '#8700df', '93': '#8700ff', '94': '#875f00',
  248. \ '95': '#875f5f', '96': '#875f87', '97': '#875faf', '98': '#875fdf', '99': '#875fff',
  249. \ '100': '#878700', '101': '#87875f', '102': '#878787', '103': '#8787af', '104': '#8787df',
  250. \ '105': '#8787ff', '106': '#87af00', '107': '#87af5f', '108': '#87af87', '109': '#87afaf',
  251. \ '110': '#87afdf', '111': '#87afff', '112': '#87df00', '113': '#87df5f', '114': '#87df87',
  252. \ '115': '#87dfaf', '116': '#87dfdf', '117': '#87dfff', '118': '#87ff00', '119': '#87ff5f',
  253. \ '120': '#87ff87', '121': '#87ffaf', '122': '#87ffdf', '123': '#87ffff', '124': '#af0000',
  254. \ '125': '#af005f', '126': '#af0087', '127': '#af00af', '128': '#af00df', '129': '#af00ff',
  255. \ '130': '#af5f00', '131': '#af5f5f', '132': '#af5f87', '133': '#af5faf', '134': '#af5fdf',
  256. \ '135': '#af5fff', '136': '#af8700', '137': '#af875f', '138': '#af8787', '139': '#af87af',
  257. \ '140': '#af87df', '141': '#af87ff', '142': '#afaf00', '143': '#afaf5f', '144': '#afaf87',
  258. \ '145': '#afafaf', '146': '#afafdf', '147': '#afafff', '148': '#afdf00', '149': '#afdf5f',
  259. \ '150': '#afdf87', '151': '#afdfaf', '152': '#afdfdf', '153': '#afdfff', '154': '#afff00',
  260. \ '155': '#afff5f', '156': '#afff87', '157': '#afffaf', '158': '#afffdf', '159': '#afffff',
  261. \ '160': '#df0000', '161': '#df005f', '162': '#df0087', '163': '#df00af', '164': '#df00df',
  262. \ '165': '#df00ff', '166': '#df5f00', '167': '#df5f5f', '168': '#df5f87', '169': '#df5faf',
  263. \ '170': '#df5fdf', '171': '#df5fff', '172': '#df8700', '173': '#df875f', '174': '#df8787',
  264. \ '175': '#df87af', '176': '#df87df', '177': '#df87ff', '178': '#dfaf00', '179': '#dfaf5f',
  265. \ '180': '#dfaf87', '181': '#dfafaf', '182': '#dfafdf', '183': '#dfafff', '184': '#dfdf00',
  266. \ '185': '#dfdf5f', '186': '#dfdf87', '187': '#dfdfaf', '188': '#dfdfdf', '189': '#dfdfff',
  267. \ '190': '#dfff00', '191': '#dfff5f', '192': '#dfff87', '193': '#dfffaf', '194': '#dfffdf',
  268. \ '195': '#dfffff', '196': '#ff0000', '197': '#ff005f', '198': '#ff0087', '199': '#ff00af',
  269. \ '200': '#ff00df', '201': '#ff00ff', '202': '#ff5f00', '203': '#ff5f5f', '204': '#ff5f87',
  270. \ '205': '#ff5faf', '206': '#ff5fdf', '207': '#ff5fff', '208': '#ff8700', '209': '#ff875f',
  271. \ '210': '#ff8787', '211': '#ff87af', '212': '#ff87df', '213': '#ff87ff', '214': '#ffaf00',
  272. \ '215': '#ffaf5f', '216': '#ffaf87', '217': '#ffafaf', '218': '#ffafdf', '219': '#ffafff',
  273. \ '220': '#ffdf00', '221': '#ffdf5f', '222': '#ffdf87', '223': '#ffdfaf', '224': '#ffdfdf',
  274. \ '225': '#ffdfff', '226': '#ffff00', '227': '#ffff5f', '228': '#ffff87', '229': '#ffffaf',
  275. \ '230': '#ffffdf', '231': '#ffffff', '232': '#080808', '233': '#121212', '234': '#1c1c1c',
  276. \ '235': '#262626', '236': '#303030', '237': '#3a3a3a', '238': '#444444', '239': '#4e4e4e',
  277. \ '240': '#585858', '241': '#606060', '242': '#666666', '243': '#767676', '244': '#808080',
  278. \ '245': '#8a8a8a', '246': '#949494', '247': '#9e9e9e', '248': '#a8a8a8', '249': '#b2b2b2',
  279. \ '250': '#bcbcbc', '251': '#c6c6c6', '252': '#d0d0d0', '253': '#dadada', '254': '#e4e4e4',
  280. \ '255': '#eeeeee', 'fg': 'fg', 'bg': 'bg', 'NONE': 'NONE' }
  281.  
  282. "}}}

  只有82-112区区30行代码,但是感觉比原来的颜色显示舒服多了,效果如下。

自己修改的vim配色选择器的颜色显示部分的更多相关文章

  1. vim中添加molokai.vim 配色安装

    无意中发现知乎中讨论的话题: 你认为最好看的 Vim 配色方案(color scheme)是哪款? 网友回答 排在第一位的是:molokai 啊,最经典的配色 既然molokai这么经典,当然要用了. ...

  2. vim配色方案

    想更换vim配色方案,需要修改两个文件: 第一个修改是在 /user/share/vim/vim73/colors 添加xxx.vim文件://路径里面有些不是vim73,是vim70或其他 第二个修 ...

  3. 改变vim配色:安装colorscheme【转】

    主要有两种方式安装colorscheme: 自行下载colorscheme安装,下载的文件扩展名通常为.vim. 通过安装相关vim的插件获取. 自行下载colorscheme安装 以mac为例,在系 ...

  4. vim配色方案设置(更换vim配色方案)

    vim配色后,我的 设定底色为黑色,字体为绿色,然后将文件夹设为洋红,默认的注释换为淡黄:其实有一种简单的方法,就是设定为系统配置好的配色方案:转载文章如下:   ---------------- ( ...

  5. Mac OSX vim配色方案选择

    首先查看系统自带的vim配色种类: ls /usr/share/vim/vim73/colors 大致输出如下: README.txt default.vim elflord.vim morning. ...

  6. mac 修改 vim 配色

    1. 看看系统有哪些自带配色方案 ls /usr/share/vim/vim73/colors README.txt darkblue.vim delek.vim elflord.vim koehle ...

  7. centos 7.6 修改vim配色方案

    cd ~ vim .vimrc colorscheme desert

  8. ubuntu下Vim配色方案Solarized的配置

    系统:ubuntu 12.04 LTS vim版本:7.4 ---------------------------------------------------------------------- ...

  9. Vim 配色设置与配色脚本语法

    几个给tag加颜色的插件 https://github.com/octol/vim-cpp-enhanced-highlight:基于tag的c family语法高亮 https://github.c ...

随机推荐

  1. 公司4:JrVue主题定制

    JrVue是我们基于element重新封装的一套组件库;  具体组件使用方法可以mnote->研发小组查看; 这里我们定制了一套主题色, 具体变动如下: 1.主题色变动: mfront有蓝.紫. ...

  2. mysql的大数据量的查询

    mysql的大数据量查询分页应该用where 条件进行分页,limit 100000,100,mysql先查询100100数据量,查询完以后,将 这些100000数据量屏蔽去掉,用100的量,但是如果 ...

  3. 枚举+贪心 HDOJ 4932 Miaomiao's Geometry

    题目传送门 /* 题意:有n个点,用相同的线段去覆盖,当点在线段的端点才行,还有线段之间不相交 枚举+贪心:有坑点是两个点在同时一条线段的两个端点上,枚举两点之间的距离或者距离一半,尽量往左边放,否则 ...

  4. Redis基础---5个基本数据结构(比较性记忆)

    “ Redis是一个内存数据库,只用硬盘来进行持久化. Mongodb是半内存数据库 Mysql是硬盘数据库 ” 1. Redis启动 安装好了之后.运行redis-3.2.8/src/下的redis ...

  5. Hadoop Hive概念学习系列之HiveQL编译基础(十)

    由客户端提交的HiveQL语句将最终被转换为一个或多个MapReduce任务并提交由Hadoop执行.不包含聚合和连接的简单SELECT语句可以使用一个单独的只包含Map阶段的任务实现.使用GROUP ...

  6. TCPClient、TCPListener的用法

    支持Http.Tcp和Udp的类组成了TCP/IP三层模型(请求响应层.应用协议层.传输层)的中间层-应用协议层,该层的类比位于最底层的Socket类提供了更高层次的抽象,它们封装 TCP 和 UDP ...

  7. hibernate--级联添加

    级联添加操作值操作当前数据时.将关联数据也进行操作,就是保存当前数据的同事也将保存和修改关联的数据 首先绑定对象间的关系; `将多方对象添加到一方对象的集合中 tm.getStudents().add ...

  8. iOS规范化时间格式,object-C计算指定时间与当前的时间差

    object-c计算指定时间与当前的时间差 头文件(.h): #import <Foundation/Foundation.h> @interface LuDate : NSDate +( ...

  9. PHPStorm+XDebug进行调试

    笔者的开发环境如下: Windows8.1+Apache+PhpStorm+XDebug+Firefox(XDebug helper 1.4.3插件). 一.XDebug安装配置 (1)下载XDebu ...

  10. HDU_1421_搬寝室_dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1421 搬寝室 Time Limit: 2000/1000 MS (Java/Others)    Me ...