`
webcenterol
  • 浏览: 914141 次
文章分类
社区版块
存档分类
最新评论

从剪贴板到剪贴板的通用语法高亮软件发布(支持N多语言)

 
阅读更多

write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie

讨论新闻组及文件

需求来源

不太喜欢太限制于Windows下的Windows live writer(以下简称WLW),虽然很多人认为它是博客写作工具的number one,甚至看到有外国的朋友曾经高呼,Linux下唯一缺少替代品的软件就是WLW了,经过长久的使用,本身功能并不算太强大,但是开放的插件系统,让 其强大到无以复加,我在以前《windows live writer 试用及众多插件试用评测... 》 文中有很详细的描述,过程中也解决过很多WLW本身的问题,比如没有模板的问题,(通过autohotkey解决),比如说本地保存目录不能改变的问题, (通过junction来改变)比如在公司及家中文档不能同步的问题,(通过dropbox),但是越依赖WLW,我就感觉越不舒服,因为我在Linux 下越来越感觉没有好用的博客写作工具了,而且WLW专有的格式,使得我无法太好的使用已有的文档,这些都是无法忽视的大问题,于是,最终,我决定彻底的迁 移到Google Document上来,无论是普通的文档,还是Blog的写作。

首先有个先天性的问题,Google Document是没有开发插件系统的,这样,碰到问题我们都没有办法通过扩展来解决,特别突出的问题就是代码高亮问题,对于程序员的博客。。。。。。贴 代码实在是太经常的事情了,不能解决此问题也是我以前甚至愿意用Word2007来写博客都不用Google Document。既然今天决定了使用Google Document,那么找个办法来解决此问题吧,方法目前想到一个,HTML的直接插入,(还好Google Document支持),那么我只需要将代码在剪贴板中保存为高亮的HTML,然后直接嵌入Google Document就行了,So Easy................解决此问题吧,于是就有了我的新工程“code-highlight-clipboard2clipboard ”,因为自己写语法分析及高亮的代码实在太麻烦了,只好选择站在巨人的肩膀上:)我利用GVim来解决此问题。(目前使用时需要自己先安装Gvim,并且将其目录加进PATH中,即在任何目录下都能通过gvim命令调用到gvim)

先看看效果

此文在Google Document下完成,以下是主体源代码的实际转换效果。还算是比较漂亮吧:)

1 from optparse import OptionParser
2 from distutils.file_util import *
3 import os
4 import tempfile
5
6 def main ():
7
8 usage = 'usage: %prog [options] '
9 version = '''%prog 0.1 Created By JTianLing
10 Any Question could be sent to JTianLing{at}Gmail.com,
11 and any advice or any bug report is appreciated too. '''
12
13 parser = OptionParser(usage, version = version)
14 parser.add_option('-f ', '--filename ', metavar = 'FILE ', dest = 'filename ',
15 help = 'Write output to FILE and save it. ')
16 parser.add_option('-t ', '--syntax ', action = 'store ',
17 type = 'string ', dest = 'syntax ',
18 default = '',
19 help = 'Set the code syntax type ')
20 parser.add_option('-c ', '--color ', action = 'store ',
21 type = 'string ', dest = 'color ',
22 default = 'default ',
23 help = 'Set the code highlight color template ')
24 parser.add_option('-n ', action= 'store_true ', dest = 'isNumber ',
25 default = False,
26 help = 'Is output with line number. ')
27 (options, args) = parser.parse_args()
28
29 filename = tempfile.mktemp() + '.tmp '
30
31 cboutStr = 'cbout > ' + filename
32 os.system(cboutStr)
33
34 syn = options.syntax
35 color = options.color
36
37 # ugly but useful vim's format code
38 vimCmd = 'gvim -c ":syntax on|:color ' + color + '|:set syn= ' + syn/
39 + '|:set nu ' + (''if options.isNumber else '! ') + '|TOhtml" -c ":w|:qa" ' + filename
40 os.system(vimCmd)
41 #print(vimCmd)
42
43 newFilename = filename + '.html '
44 cbinStr = 'more ' + newFilename + '| cbin '
45 os.system(cbinStr)
46
47 # Del the temp file when that's needed
48 if options.filename:
49 move_file(newFilename, './ ' + options.filename)
50 else :
51 os.remove(newFilename)
52
53 os.remove(filename)
54
55 if __name__ == '__main__ ':
56 main()

使用

除了以上的源代码,我还实现了两个类似于stdin及stdout的与剪贴板相关的cbin,cbout命令(clipboard in or out)。实际使用方法类似stdin及stdout,分别是写入剪贴版中及从剪贴板中读出数据,(只支持文本格式)

其实下一版预计还可以抽出整个转换的过程,那样使用起来可能更加灵活。目前此代码仅在Windows下测试,但是为了兼容,我使用了PyQt的库(所以狂大,其实才几行代码),将来会在Linux下测试及发布Linux的

二进制版本。

使用方法是在Google Document中通过(Edit->Edit Html->粘贴->Update),你也可以保存为任何你想要的文件/粘贴到你想要去的任何位置。

命令的使用方法如下:

>chc2c --help
Usage: chc2c [options]

Options:
--version show program's version number and exit
-h, --help show this help message and exit
-f FILE, --filename=FILE
Write output to FILE and save it.
-t SYNTAX, --syntax=SYNTAX
Set the code syntax type
-c COLOR, --color=COLOR
Set the code highlight color template
-n Is output with line number.

支持的语言

支持的语言种类/语法格式几乎囊括了常见的所有语言,(仅限制于Vim支持的种类,站在巨人的肩膀上就是好),以下是一个列表:

2html a2ps
a65 aap abap abaqus
abc abel acedb ada
aflex ahdl alsaconf amiga
aml ampl ant antlr
apache apachestyle arch art
asm asm68k asmh8300 asn
aspperl aspvbs asterisk asteriskvm
atlas autohotkey autoit automake
ave awk ayacc b
baan basic bc bdf
bib bindzone blank bst
btm bzr c calendar
catalog cdl cdrdaoconf cdrtoc
cf cfg ch change
changelog chaskell cheetah chill
chordpro cl clean clipper
cmake cmusrc cobol coco
colortest conaryrecipe conf config
context cpp crm crontab
cs csc csh csp
css cterm ctrlh cuda
cupl cuplsim cvs cvsrc
cweb cynlib cynpp d
dcd dcl debchangelog debcontrol
debsources def denyhosts desc
desktop dictconf dictdconf diff
dircolors diva django dns
docbk docbksgml docbkxml dosbatch
dosini dot doxygen dracula
dsl dtd dtml dtrace
dylan dylanintr dylanlid ecd
edif eiffel elf elinks
elmfilt erlang eruby esmtprc
esqlc esterel eterm eviews
exim expect exports fasm
fdcc fetchmail fgl flexwiki
focexec form forth fortran
foxpro framescript freebasic fstab
fvwm fvwm2m4 gdb gdmo
gedcom git gitcommit gitconfig
gitrebase gitsendemail gkrellmrc gnuplot
gp gpg grads gretl
groff groovy group grub
gsp gtkrc haml hamster
haskell haste hastepreproc hb
help hercules hex hitest
hog hostconf html htmlcheetah
htmldjango htmlm4 htmlos ia64
ibasic icemenu icon idl
idlang indent inform initex
initng inittab ipfilter ishd
iss ist jal jam
jargon java javacc javascript
jess jgraph jproperties jsp
kconfig kix kscript kwt
lace latte ld ldapconf
ldif lex lftp lhaskell
libao lifelines lilo limits
lisp lite litestep loginaccess
logindefs logtalk lotos lout
lpc lprolog lscript lsl
lss lua lynx m4
mail mailaliases mailcap make
man manconf manual maple
masm mason master matlab
maxima mel messages mf
mgl mgp mib mma
mmix mmp modconf model
modsim3 modula2 modula3 monk
moo mp mplayerconf mrxvtrc
msidl msmessages msql mupad
mush muttrc mysql named
nanorc nasm nastran natural
ncf netrc netrw nosyntax
nqc nroff nsis objc
objcpp ocaml occam omnimark
openroad opl ora pamconf
papp pascal passwd pcap
pccts pdf perl pf
pfmain php phtml pic
pike pilrc pine pinfo
plaintex plm plp plsql
po pod postscr pov
povini ppd ppwiz prescribe
privoxy procmail progress prolog
promela protocols psf ptcap
purifylog pyrex python qf
quake r racc radiance
ratpoison rc rcs rcslog
readline README.txt rebol registry
remind resolv reva rexx
rhelp rib rnc rnoweb
robots rpcgen rpl rst
rtf ruby samba sas
sass sather scheme scilab
screen sd sdl sed
sendpr sensors services setserial
sgml sgmldecl sgmllnx sh
sicad sieve simula sinda
sindacmp sindaout sisu skill
sl slang slice slpconf
slpreg slpspi slrnrc slrnsc
sm smarty smcl smil
smith sml snnsnet snnspat
snnsres snobol4 spec specman
spice splint spup spyce
sql sqlanywhere sqlforms sqlinformix
sqlj sqloracle sqr squid
sshconfig sshdconfig st stata
stp strace sudoers svn
syncolor synload syntax sysctl
tads tags tak takcmp
takout tar tasm tcl
tcsh terminfo tex texinfo
texmf tf tidy tilde
tli tpp trasys trustees
tsalt tsscl tssgm tssop
uc udevconf udevperm udevrules
uil updatedb valgrind vb
vera verilog verilogams vgrindefs
vhdl vim viminfo virata
vmasm voscm vrml vsejcl
wdiff web webmacro wget
whitespace winbatch wml wsh
wsml wvdial xbl xdefaults
xf86conf xhtml xinetd xkb
xmath xml xmodmap xpm
xpm2 xquery xs xsd
xslt xxd yacc yaml
z8a zsh

是不是比目前存在的所有语法高亮工具支持的语言种类还要多?你要是说你懂的上面没有的语言,我一定认为你是神仙。。。。。。。。。。。。

好了,别的不多说了,自己下载试用吧,目前还是0.1版,以后会慢慢增加一些功能的,最主要的是找到一个精简版的vim(目前需要首先自己安装Vim才能使用,并将Vim的目录加入PATH中才能使用)

完整源代码获取说明

工程保管在Google上:http://code.google.com/p/code-highlight-clipboard2clipboard/

也可以直接使用Mercurial克隆下库:

https://code-highlight-clipboard2clipboard.googlecode.com/hg/

Mercurial使用方法见《分布式的,新一代版本控制系统Mercurial的介绍及简要入门

原创文章作者保留版权 转载请注明原作者 并给出链接

write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie

分享到:
评论

相关推荐

    CodePaste代码高亮网站源码

    该网站还支持语法高亮显示,支持的语言有C#, VB.NET, JavaScript, HTML, ASP.NET, JavaScript, XML, CSS, SQL, T-SQL, and FoxPro。而代码行数显示可以手动开启或关闭,只需点击一下即可将代码复制到剪贴板。 代码...

    Clipboarder:适用于Windows的功能丰富的剪贴板管理器

    剪贴板 Clipboarder是使用.NET Framework 4.0用C#编写的Windows剪贴板管理工具。 从Clipboarder的最新版本(v1.0)。 特征: 基于文本的内容的剪贴板管理。 能够使用密码将Clipboarder的内容保存到数据库。 能够...

    【最好用的文本编辑器】Notepad++ v8.5 免安装版

    最新 Notepad++ v8.5 免安装版 解压即用 ...高级功能:宏、编码转换、行操作、剪贴板记录、自定义备份位置、插件、编辑快捷键、命令行操作 语法醒目提示(可于图形用者界面调整)及语法折叠功能,支持的程序语言如下:

    clippy:Clippy是用Electron制作的最小剪贴板历史记录管理器!

    帅气! :rocket: Clippy是使用 , 和制作的最小剪贴板历史记录日志...语法高亮显示代码 经常问的问题 版本控制 要npm version软件包版本,请使用NPM中的npm version 。 我建议也通过运行npm version patch -s -m "cho

    gTalk语法高亮显示「gTalk Syntax Highlighting」-crx插件

    更改:0.3.0(附件发布)-复制到剪贴板,链接到此插件,样式菜单简洁-现在支持gTalk,并且“实验中的图片”实验室扩展功能已关闭-捐赠按钮,切换开关和选项上的前叉横幅页-点击事件的Google Analytics(分析)-性感...

    SynWrite(代码编辑器) v6.38.2720.zip

    1.支持多语言语法高亮 2.高亮完全自定义 3.源代码结构树状图显示 4.支持几乎所有编码 5.编码帮助:自动完成,源代码模板,SmartTagTabbing功能,SyncEdit功能编辑相同标识符,支持HTML CSS XSL的高速编码...

    EvernoteSyntaxHighlight:一个 Sublime Text 插件,用于在 Evernote 中保存带有语法高亮显示的代码片段

    Evernote 语法高亮 Evernote Syntax Hightlight 是... 并生成您的开发人员令牌,并将其复制到剪贴板上。 然后转到 Evernote Syntax Highlight 目录插件: cd ~/Library/Application Support/Sublime Text 2/Packages/E

    Sqlite Developer(SQL管理工具) v3.9.7 简体中文版.zip

    Sqlite Developer是一个非常非常好...[数据编辑器]更新:粘贴从剪贴板数据,并允许用户取消操作时显示进度。 [查询编辑器]修正:有时自动完成错了位置popupped。   [SQLite的发动机]修正:SOUNDEX函数不会被编译。

    HippoEDIT 代码编辑器

    循环剪贴板、文本和文件拖曳的完整支持、使用多种剪贴板格式将高亮代码直接粘帖进其他程序中、或将高亮的代码作为html重新粘帖回编辑器等功能帮助您顺利将HippoEDIT集成进您的工作环境。 其他功能包括强大的查找...

    超强文字编辑器 EditPlus V3.70 build 915汉化最新版

    作为文字编辑器它还有一项好用的功能即剪贴板动态监测功能,能够同步于剪贴板自动将文字粘贴进 EditPlus 的编辑窗口中,进而让你省去复制后再粘贴的步骤。 EditPlus 也是一款非常好用的 HTML 编辑器,除了支持颜色...

    Editplus中文版

    支持语法高亮;支持代码折叠;支持代码自动完成(但其功能比较弱),支持代码提示功能;配置功能强大,且比较容易,扩展也比较强。像PHP、Java程序等的开发环境,只要看一下资料,几分钟就可以搞定配置,很适合初学者...

    LopeEdit Pro v5.5

    完全可以替代windows内置的记事本,打开的文件以标签页形式进行排列,支持C/C++, Java, JavaScript, Visual Basic, VBScript, HTML, ASP, JSP, SQL, Cobol, C#, CSS, Pascal, Perl, PHP等多种语言的语法高亮显示。...

    MarkdownMonsterSetup.exe

    Markdown Monster是一款功能强大的Markdown...您可以通过剪贴板粘贴图片,从资源管理器拖放图片,或使用内置文件浏览器进行操作。内联拼写检查和字数统计可使您的内容保持简洁高效,此资源软件可以直接免费安装使用。

    SQLite Expert Pro是一款工非常强大的可视化数据库管理软件,软件的功能非常的丰富,它用户的管理和开发,可以满足从编

     -通过剪贴板中的数据导出到Excel。  数据编辑  -在使用功能强大的就地编辑网格的编辑数据。  -图像编辑器目前支持JPEG,PNG,BMP,GIF和ICO图像格式。  -使用集成的十六进制编辑器可视化和修改BLOB字段。

    开源源码编辑器 Synwrite 6.41.2780.zip

    完全可自定义的语法高亮显示多种语言(见列表) 代码折叠 支持几乎所有编码系统(ASCII,Unicode等) 多重插入编辑(见动画) 多项选择(见动画) 面板: 源代码的树视图 文件管理器 项目管理 FTP / SFTP...

    ISTool_5301

    ISTool 是帮助你创建由 Jordan Russell 制作的 Inno Setup 编译器脚本的...大多数区段已完全支持剪贴板的操作 ⑸.保存脚本注释 ⑹.可以导入 Visual Basic .lst 文件与 InstallShield .iwz 文件 ⑺.已经被翻译为多重语言

    Editplus3.60.870

    editplus中文版是一套功能强大的文本编辑器。它拥有无限制的Undo/Redo功能,让你不再为一步误...特别值得一提的是,它的监视剪贴板的功能,能同步于剪贴板自动将文字贴进EditPlus的编辑窗口中,让你省去粘贴的步骤。

    EditPlus 中文破解版.zip

    而它还有一个好用的功能,就是它有监视剪贴板的功能,同步于剪贴板可自动粘贴进 EditPlus 的窗口中省去粘贴的步骤。 EditPlus功能强大,界面简洁美观,且启动速度快;中文支持比较好;支持语法高亮...

    react-code-viewer:Simple no-frills code viewer with syntax highlighting,React 代码高亮

    React代码视图 ...复制到剪贴板 安装 npm install react-code-viewer 用法 您需要将编辑器与提供语法高亮显示的第三方库一起使用。 例如,下面将与 : import React from 'react' ; import Viewer f

    EditPlus_3.7

    破解版 --------------- editplus中文版是一套功能强大的文本编辑器。它拥有无限制的Undo/Redo...特别值得一提的是,它的监视剪贴板的功能,能同步于剪贴板自动将文字贴进EditPlus的编辑窗口中,让你省去粘贴的步骤。

Global site tag (gtag.js) - Google Analytics