⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2html.vim

📁 MSYS在windows下模拟了一个类unix的终端
💻 VIM
字号:
" Vim syntax support file" Maintainer:	Bram Moolenaar <Bram@vim.org>" Last Change:	2001 May 10" Transform a file into HTML, using the current syntax highlighting." function to produce text with HTML codes for attributes and colors"" a:attr  contains 'U' for underline, 'I' for italic and 'B' for bold" a:fg	  foregound color name" a:bg    background color name" a:txt   text"" the big return statement concatenates:" - the code to start underline/italic/bold, substituting each 'U', 'I' or 'B'"   by the same character inside <>" - the code to start the background color" - the code to start the foreground color" - the text, where each '&', '<', '>' and '"' is translated for their special"   meaning.  A CTRL-L is translated into a page break" - the code to end the foreground color" - the code to end the background color" - the code to end underline/italic/bold, substituting each 'U', 'I' or 'B'"   by the same character inside </>, in reverse orderfunction! HTMLPutText(attr, bg, fg, txt)	let bgs = ""	" code for background color start	let bge = ""	" code for background color end	if a:bg != ""	  let bgs = '<SPAN style="background-color: ' . a:bg . '">'	  let bge = '</SPAN>'	endif	let fgs = ""	" code for foreground color start	let fge = ""	" code for foreground color end	if a:fg != ""	  let fgs = '<FONT color=' . a:fg . ">"	  let fge = '</FONT>'	endif	return substitute(a:attr, '.', '<&>', 'g') . bgs . fgs . substitute(substitute(substitute(substitute(substitute(a:txt, '&', '\&amp;', 'g'), '<', '\&lt;', 'g'), '>', '\&gt;', 'g'), '"', '\&quot;', 'g'), "\x0c", '<HR class=PAGE-BREAK>', 'g') . fge . bge . substitute(a:attr[2] . a:attr[1] . a:attr[0], '.', '</&>', 'g')endfunif &t_Co == 8  let cterm_color0  = "#808080"  let cterm_color1  = "#ff6060"  let cterm_color2  = "#00ff00"  let cterm_color3  = "#ffff00"  let cterm_color4  = "#8080ff"  let cterm_color5  = "#ff40ff"  let cterm_color6  = "#00ffff"  let cterm_color7  = "#ffffff"else  let cterm_color0  = "#000000"  let cterm_color1  = "#c00000"  let cterm_color2  = "#008000"  let cterm_color3  = "#804000"  let cterm_color4  = "#0000c0"  let cterm_color5  = "#c000c0"  let cterm_color6  = "#008080"  let cterm_color7  = "#c0c0c0"  let cterm_color8  = "#808080"  let cterm_color9  = "#ff6060"  let cterm_color10 = "#00ff00"  let cterm_color11 = "#ffff00"  let cterm_color12 = "#8080ff"  let cterm_color13 = "#ff40ff"  let cterm_color14 = "#00ffff"  let cterm_color15 = "#ffffff"endiffunction! HTMLColor(c)  if exists("g:cterm_color" . a:c)    execute "return g:cterm_color" . a:c  else    return ""  endifendfun" Set some options to make it work faster." Expand tabs in original buffer to get 'tabstop' correctly used.let old_title = &titlelet old_icon = &iconlet old_paste = &pastelet old_et = &etset notitle noicon paste et" Split window to create a buffer with the HTML file.if expand("%") == ""  new Untitled.htmlelse  new %.htmlendif1,$dset noet" Find out the background and foreground color.if has("gui_running")  let bg = synIDattr(highlightID("Normal"), "bg#", "gui")  let fg = synIDattr(highlightID("Normal"), "fg#", "gui")else  let bg = HTMLColor(synIDattr(highlightID("Normal"), "bg", "cterm"))  let fg = HTMLColor(synIDattr(highlightID("Normal"), "fg", "cterm"))endifif bg == ""   if &background == "dark"     let bg = "#000000"     if fg == ""       let fg = "#FFFFFF"     endif   else     let bg = "#FFFFFF"     if fg == ""       let fg = "#000000"     endif   endifendif" Insert HTML header, with the background color.  Add the foreground color" only when it is defined.exe "normal a<HTML>\n<HEAD>\n<TITLE>".expand("%:t")."</TITLE>\n</HEAD>\n<BODY BGcolor=".bg."\e"if fg != ""  exe "normal a TEXT=".fg."\e"endifexe "normal a>\n<PRE>\n\e"exe "normal \<C-W>p"" Some 'constants' for ease of addressing with []let uline = "U"let bld = "B"let itl = "I"" Loop over all lines in the original textlet end = line("$")let lnum = 1while lnum <= end  " Get the current line, with tabs expanded to spaces when needed  let line = getline(lnum)  if match(line, "\t") >= 0    exe lnum . "retab!"    let did_retab = 1    let line = getline(lnum)  else    let did_retab = 0  endif  let len = strlen(line)  let new = ""  if exists("html_number_color")    let new = '<FONT COLOR=' . html_number_color . '>' . strpart('        ', 0, strlen(line("$")) - strlen(lnum)) . lnum . '</FONT>  '  endif  " Loop over each character in the line  let col = 1  while col <= len    let startcol = col " The start column for processing text    let id = synID(lnum, col, 1)    let col = col + 1    " Speed loop (it's small - that's the trick)    " Go along till we find a change in synID    while col <= len && id == synID(lnum, col, 1) | let col = col + 1 | endwhile    " output the text with the same synID, with all its attributes    " The first part turns attributes into  [U][I][B]    let id = synIDtrans(id)    if has("gui_running")      let new = new . HTMLPutText(uline[synIDattr(id, "underline", "gui") - 1] . itl[synIDattr(id, "italic", "gui") - 1] . bld[synIDattr(id, "bold", "gui") - 1], synIDattr(id, "bg#", "gui"), synIDattr(id, "fg#", "gui"), strpart(line, startcol - 1, col - startcol))    else      let new = new . HTMLPutText(uline[synIDattr(id, "underline", "cterm") - 1] . itl[synIDattr(id, "italic", "cterm") - 1] . bld[synIDattr(id, "bold", "cterm") - 1], HTMLColor(synIDattr(id, "bg", "cterm")), HTMLColor(synIDattr(id, "fg", "cterm")), strpart(line, startcol - 1, col - startcol))    endif    if col > len      break    endif  endwhile  if did_retab    undo  endif  exe "normal \<C-W>pa" . strtrans(new) . "\n\e\<C-W>p"  let lnum = lnum + 1  +endwhile" Finish with the last lineexe "normal \<C-W>pa</PRE>\n</BODY>\n</HTML>\e"let &title = old_titlelet &icon = old_iconlet &paste = old_pasteexe "normal \<C-W>p"let &et = old_etexe "normal \<C-W>p"" In case they didn't get usedlet startcol = 0let id = 0unlet uline bld itl lnum end col startcol line len new idunlet old_title old_icon old_paste old_et did_retab bg fgunlet cterm_color0 cterm_color1 cterm_color2 cterm_color3unlet cterm_color4 cterm_color5 cterm_color6 cterm_color7if &t_Co != 8  unlet cterm_color8 cterm_color9 cterm_color10 cterm_color11  unlet cterm_color12 cterm_color13 cterm_color14 cterm_color15endifdelfunc HTMLPutTextdelfunc HTMLColor

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -