zoukankan      html  css  js  c++  java
  • 自己修改的vim配色选择器的颜色显示部分

      话不多说,上代码如下:

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

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

  • 相关阅读:
    Django Admin Cookbook-27如何在Django Admin后台中添加基于日期的过滤
    Django Admin Cookbook-26如何禁用Django Admin后台分页
    Django Admin Cookbook-25如何在模型列表页上显示更多行
    Django Admin Cookbook-24如何从两个不同的模型创建一个Django Admin后台页面
    Django Admin Cookbook-23如何在Django admin中添加嵌套的内联
    Django Admin Cookbook-22如何将一对一关系添加为Admin内联字段
    Django Admin Cookbook-21如何从Django Admin后台一个页面同时编辑多个模型
    个人收集的一些Django基础及实战教程
    Django Admin Cookbook-20如何删除模型的“添加”/“删除”按钮
    操作系统 RR轮转调度算法(C++实现)
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/7408782.html
Copyright © 2011-2022 走看看