`
izuoyan
  • 浏览: 9206545 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

一键在剪贴板中进行语法高亮的工具发布

阅读更多

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

讨论新闻组及文件

我一直希望有个工具能够便捷的进行语法高亮,因为很多地方都可以用到。特别是,假如我在Google Document或者Office中编辑文件的时候,或者是在Windows Live Writer中编写博客文章的时候(WLW中有插件支持,但还是没有此工具这么方便,并且现在写博客的时候我已经改用Google Document了),我都希望能便捷的进行语法高亮,但是并不是都那么容易实现。特别是像Google Document这样不支持插件的工具,因为Google Document不支持插件,不能进行语法高亮,所以长时间以来我都不将其作为博客的编写工具,直到,你知道的,我决定写个工具来解决这个问题。于是,就有了今天这个工具。

其实本程序实际是原来的chc2c工具的一个UI版本,code-highlight-clipboard2clipboard chc2c是一个命令行工具,可能很多人会比较排斥,虽然我建一些快捷方式也能实现比较便捷的效果。当然,怎么说还是UI工具来的方便,此功能托管在Google Code上:onekeycodehighlighter 已经有下载了:ClipboardHighlighter0.1.rar 因为还是使用Gvim来完成实际工作,所以,gvim的安装还是不可少,假如有人发现绿色版简易版支持语法高亮和ToHtml的vim请推荐给我,我直接放在下载包中,这样大家就可以不用安装gvim了。对了,安装后,将gvim添加到PATH中,这样我才能找到并执行它。

可以通过config.py文件来配置,配置文件中的注释说明的很详细了,简单的修改应该没有问题,config文件本身就是一个python脚本,只要你满足我原来的变量名不变,你可以做很多事情。
默认情况下,我仅添加了c,cpp,python,java,javascript的语法高亮支持,其他的语法在config中配置吧。config中除了syntaxSupport 以外,都支持动态改变。比如保存的文件名,是否有行号,颜色主题等。

使用中软件为一个任务栏中的图标,右键点击会出现菜单:
选中的一栏表示使用的语法高亮语言。使用中将需要进行语法高亮的文字用CTRL-C复制到剪贴板中,然后按Win+Z完成转换,然后就可以直接粘贴到任何支持HTML的地方了。可以是网站的编辑器,可以是Windows live writer,office word,Google Document。。。。。。。。。。你也可以在config.py中配置你想要保存的文件名,直接保存成一个HTML文件。

实际编写的主要工具为PyQt。因为此工具有一些特殊的功能要求,比如全局快捷键,比如用ctypes来调用了Win32的API,比如我要使用System Tray Icon,比如对剪贴板的操作等等等等,我觉得可以将这些例子分为单独的文章来讲解,目前仅贴出一些此工具转换的效果给大家看看。
下面是一些示例:
配置文件(Python):

MOD_ALT = 0x0001
MOD_NONE = 0x000
MOD_CONTROL = 0x0002
MOD_SHIFT = 0x0004
MOD_WIN = 0x0008

# the syntax support you want in the trayicon menu
syntaxSupport = ["c", "cpp", "python", "java", "javascript"]

# the global hotkey define,the modifier can be used is listed above.
modifier = MOD_WIN
hotkey = 'Z'

# do you need display line number before every line?
isLineNumber = False

#------------------------------------------------------------------------------------
# you need not change these below at most time if you don't know what it is.
# the color theme you want use. (corresponding to gvim)
color = 'default'

# if you want to save the transformed in a file.
filename = ''

C++:
//激活创建OpenGL窗口
voidEnableOpenGL()
{
PIXELFORMATDESCRIPTOR pfd;
intiFormat;

ghDC = GetDC( ghWnd );

ZeroMemory( &pfd, sizeof( pfd ) );
pfd.nSize = sizeof( pfd );
pfd.nVersion = 1;//版本,一般设为1
pfd.dwFlags = PFD_DRAW_TO_WINDOW | //一组表明象素缓冲特性的标志位
PFD_SUPPORT_OPENGL;
pfd.iPixelType = PFD_TYPE_RGBA; //明象素数据类型是RGBA还是颜色索引;
pfd.cColorBits = 32; //每个颜色缓冲区中颜色位平面的数目,对颜色索引方式是缓冲区大小
pfd.cDepthBits = 16;
pfd.iLayerType = PFD_MAIN_PLANE; //被忽略,为了一致性而包含的

iFormat = ChoosePixelFormat( ghDC, &pfd );//选择一个像素格式

SetPixelFormat( ghDC, iFormat, &pfd ); //设置到DC中

ghRC = wglCreateContext( ghDC );//创建绘图描述表
wglMakeCurrent( ghDC, ghRC ); //使之成为当前绘图描述表
}

java:

//: holding/AddingGroups.java
packageholding; /* Added by Eclipse.py */
// Adding groups of elements to Collection objects.
importjava.util.*;

publicclassAddingGroups {
publicstaticvoidmain(String[] args) {
Collection<integer> collection =<br><font color="#804040"><b>new</b></font>ArrayList<integer>(Arrays.asList(<font color="#ff00ff">1</font>, <font color="#ff00ff">2</font>, <font color="#ff00ff">3</font>, <font color="#ff00ff">4</font>, <font color="#ff00ff">5</font>));<br> Integer[] moreInts = { <font color="#ff00ff">6</font>, <font color="#ff00ff">7</font>, <font color="#ff00ff">8</font>, <font color="#ff00ff">9</font>, <font color="#ff00ff">10</font>};<br> collection.addAll(Arrays.asList(moreInts));<br><font color="#0000ff">// Runs significantly faster, but you can't</font><br><font color="#0000ff">// construct a Collection this way:</font><br> Collections.addAll(collection, <font color="#ff00ff">11</font>, <font color="#ff00ff">12</font>, <font color="#ff00ff">13</font>, <font color="#ff00ff">14</font>, <font color="#ff00ff">15</font>);<br> Collections.addAll(collection, moreInts);<br><font color="#0000ff">// Produces a list "backed by" an array:</font><br> List<integer> list = Arrays.asList(<font color="#ff00ff">16</font>, <font color="#ff00ff">17</font>, <font color="#ff00ff">18</font>, <font color="#ff00ff">19</font>, <font color="#ff00ff">20</font>);<br> list.set(<font color="#ff00ff">1</font>, <font color="#ff00ff">99</font>); <font color="#0000ff">// OK -- modify an element</font><br><font color="#0000ff">// list.add(21); // Runtime error because the</font><br><font color="#0000ff">// underlying array cannot be resized.</font><br> }<br> } <font color="#0000ff">///:~</font><br></integer></integer></integer>

javascript:

// This function recursively looks at Node n and its descendants,
// converting all Text node data to uppercase
functionupcase(n){
if(n.nodeType == 3/*Node.TEXT_NODE*/){
// If the node is a Text node, create a new Text node that
// holds the uppercase version of the node's text, and use the
// replaceChild() method of the parent node to replace the
// original node with the new uppercase node.
n.data = n.data.toUpperCase();
}
else{
// If the node is not a Text node, loop through its children
// and recursively call this function on each child.
varkids = n.childNodes;
for(vari = 0; i [i]);
}
}

再来个不一样的,delek主题+行号的Python效果:
1
2 MOD_ALT = 0x0001
3 MOD_NONE = 0x000
4 MOD_CONTROL = 0x0002
5 MOD_SHIFT = 0x0004
6 MOD_WIN = 0x0008
7
8 # the syntax support you want in the trayicon menu
9 syntaxSupport = ["c", "cpp", "python", "java", "javascript"]
10
11 # the global hotkey define,the modifier can be used is listed above.
12 modifier = MOD_WIN
13 hotkey = 'Z'
14
15 # do you need display line number before every line?
16 isLineNumber = True
17
18 #------------------------------------------------------------------------------------
19 # you need not change these below at most time if you don't know what it is.
20 # the color theme you want use. (corresponding to gvim)
21 color = 'delek'
22
23 # if you want to save the transformed in a file.
24 filename = ''

呵呵,效果不错吧?唯一的问题是因为使用了vim,所以总是会弹出一个gvim的窗口,有点影响视觉效果,但是好在不影响使用,对于支持的语法我重新贴一下:

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 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


支持的颜色主题有:
blue
color
darkblue
default
delek
desert
elflord
evening
koehler
morning
murphy
pablo
peachpuff
ron
shine
slate
torte
zellner


支持的颜色主题,语言语法都是通过config来配置,其实操作就是选择好语言,copy,Win+Z,paste。。。。。。。。。。

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

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




分享到:
评论

相关推荐

    AHK 拷贝 win 资源管理器选择文件的文件名与路径到剪切板

    win 资源管理器选择文件的文件名与路径到剪切板”指的是使用 AutoHotkey (AHK) 这款自动化脚本语言,编写脚本来实现在Windows资源管理器中选中多个文件后,一键将这些文件的完整路径和名称复制到剪贴板的功能。...

    HiJson一键格式化json,看清json整体结构

    4. **错误检查**:在格式化过程中,工具可能还会检查JSON的语法错误,并提供相应的提示。 5. **复制和保存**:格式化后的JSON数据可以直接复制到剪贴板,或者保存为文件供后续使用。 在日常工作中,"HiJson一键格式...

    xeclipboard纯js复制文本到剪贴板

    在IT行业中,尤其是在Web开发领域,常常需要与用户的操作系统进行交互,其中一项常见的需求就是复制文本到用户的剪贴板。`xeclipboard`是一个专门解决这个问题的JavaScript库,它允许开发者在浏览器环境中,无论是在...

    取色工具的阿尔取色工具

    6. **复制到剪贴板**:一键将颜色值复制到剪贴板,方便粘贴到其他应用中。 7. **屏幕截图**:部分工具还具备截图功能,可以结合取色一起使用。 关于EditPlus,其主要特性包括: 1. **语法高亮**:对HTML、CSS、...

    excel生成sql语句小工具

    4. 预览生成的SQL语句,确认无误后,可以一键复制到剪贴板。 5. 在数据库管理工具中粘贴SQL语句,执行导入操作。 在实际使用过程中,这个工具还有一些需要注意的细节: - 数据类型匹配:确保Excel中的数据类型与...

    Google Picasa相册辅助工具

    通过输入相册的URL,工具能够自动加载相册中的所有图片信息,然后一键转换成适合在网页中插入的[IMG]标签格式。 这个工具的工作流程如下: 1. 输入Google Picasa相册的URL,这通常是一个包含你个人相册ID的链接。 2...

    SyntaxHighlighter代码格式化高亮插件

    - **复制到剪贴板**:提供了一键复制代码的功能,方便用户将代码片段复制到其他地方使用。 - **自定义样式**:允许开发者通过修改CSS样式来定制代码的显示风格。 - **行号显示**:可以为代码添加行号,便于参考和...

    CodeColorist

    1. 首先将需要发布的代码复制到剪贴板,然后打开本工具的页面; 2. 单击粘贴按钮,或者手动将代码粘贴到代码框中; 3. 设置好您需要的字体、背景颜色; 4. 在左边的列表中选择单击相应的语法,即可生成着色后的代码...

    editplus v3.01

    它可以保存多个剪贴板历史记录,让用户在处理多段文本时无需反复切换,提高了工作效率。 此外,**模板文件** 是EditPlus的另一大特色。用户可以自定义各种模板,如HTML头部、CSS样式或常用函数,只需一键即可插入到...

    syntaxhighlighter_3.0.83

    4. **复制到剪贴板**:提供一键复制代码至剪贴板的功能,方便用户快速复制和使用代码。 5. **行号显示**:可选择是否显示代码行号,有助于定位代码位置。 6. **代码折叠**:对于较长的代码段,支持折叠和展开,...

    类似qq的屏幕截图工具

    5. 编辑功能:包括裁剪、添加文字、画线、高亮等,使用户可以在截图上进行注释。 6. 保存和分享:截图后可以保存为常见图片格式(如JPEG、PNG),或者直接复制到剪贴板,方便分享。 尽管这个工具在功能上可能不敌QQ...

    EditPlus 免注册版(纯绿色)

    14. **剪贴板历史记录**:EditPlus保留了剪贴板的历史记录,可以随时回溯并重新应用之前复制的内容。 15. **无限制的撤销/重做**:提供了丰富的撤销/重做功能,让用户在编辑过程中可以自由调整操作。 综上所述,...

    mac代码片段分享工具,GistPal 45¥ 买的

    2. **快捷操作**:通过GistPal,你可以一键保存当前剪贴板中的代码,无需离开当前的工作环境。这在你需要快速记录某个代码片段时特别有用。 3. **代码编辑**:内置的代码编辑器支持多种编程语言的语法高亮,使得...

    剪贴板

    在Windows、Mac OS以及Linux等主流操作系统中,剪贴板是实现数据复制、剪切和粘贴操作的关键机制。当你在文档中复制一段文本或图片,实际上是将这些信息暂存到了剪贴板上,然后可以在其他地方粘贴出来。 SCSS,全称...

    EditPlus 3

    12. **剪贴板历史**:可以查看和使用剪贴板的历史记录,方便复制和粘贴。 13. **拼写检查**:内置拼写检查功能,帮助用户发现并纠正文本中的拼写错误。 14. **自定义工具栏和菜单**:用户可以根据需要添加或移除...

    KlipperAdvancedManager:轻松管理剪贴板历史记录

    在日常电脑操作中,剪贴板是我们经常会用到的功能,无论是复制文本、图片还是其他数据,它都为我们的工作提供了极大的便利。然而,剪贴板的默认功能往往有限,只能存储一项内容,无法查看历史记录,这在某些情况下...

    小巧的js格式化工具Jsci

    5. **结果查看**:格式化后的代码会显示在程序的输出区域,可以直接复制到剪贴板或者保存到文件。 **适用场景** JSci适用于所有使用JavaScript进行开发的场合,无论是前端网页开发还是Node.js服务器端编程。在团队...

    简易文本编辑器(带工具栏、查找替换功能)

    C#的`Clipboard`类支持剪贴板操作,而通过维护一个操作历史列表,可以实现撤销/重做功能。 3. **查找与替换**:这个功能使得用户能够快速定位和替换文本中的特定内容。在C#中,我们可以使用`String`类的`IndexOf`和...

    AutoIt(Au3程序开发工具) v3.3.10.2 官方版.rar

    直接与窗口的“控件“交互(设置/获取 文字、移动、关闭,等等) 配合剪贴板进行剪切/粘贴文本操作 对注册表进行操作 不同于 AutoIt v2,新的v3版本含有更多的标准语法——类似于VBScript和BASIC——而且现在支持...

    HiJson 2.1.2

    3. **高亮显示**:为了提高可读性,HiJson 2.1.2会对JSON数据的关键字和语法进行高亮显示,使得数据结构更加突出,有助于快速定位关键信息。 4. **导出与导入**:除了查看,软件还支持将JSON数据导出为文本文件或...

Global site tag (gtag.js) - Google Analytics