zoukankan      html  css  js  c++  java
  • 用Notepad++为博客插入高亮代码

    我最初是使用的博客园在线编辑器的插入代码功能,后来看了YJingLee的CnBlogs博文排版技巧一文,觉得他的代码样式很好看,便想学习过来。但他推荐使用的Paste from Visual Studio插件需要从Visual Studio中复制代码,这样适用的编程语言就比较少。而我在上一篇博文中要插入AutoHotkey的代码,连博客园的插入代码中也不支持。所以就想到了一直在用的Notepad++,默认就支持很多种语言的高亮,还支持自定义的扩展,如果能把它显示的高亮代码复制为html格式就好了。

    已经有人做了这样的插件,单击Notepad++菜单中的 插件->NppExport->Export to HTML,就可以生成对应的HTML文件,但它生成的代码不太方便直接插入在博客文章中,而且也不够精简,连回车符都用了<span>。我想把它变成Paste from Visual Studio生成代码那样的格式,就写了一段AutoHotkey代码,主要就是进行正则替换。

    ahk代码如下:

    FileSelectFile, CodeFile, 3 ;1:文件必须存在+2:路径必须存在
    FileRead, CodeStr, %CodeFile%
    StartPos := 1
    while 1
    {
        StartPos := RegExMatch(CodeStr, "\.(sc\d+).*\{\r\n([\s\S]*?)}", Match, StartPos)
        if(StartPos>0)
            StartPos := StartPos+1
        else
            break
        if(Match2 == "")
            CodeStr := RegExReplace(CodeStr, "<span class=""" . Match1 . """>([\s\S]*?)</span>", "$1")
        else
        {
            Match2 := RegExReplace(Match2, "\r\n", " ")
            Match2 := RegExReplace(Match2, "\t", "")
            CodeStr := RegExReplace(CodeStr, "(?<=<span )class=""" . Match1 . "(?="">[\s\S]*?</span>)", "style=""" . Match2)
        }
    }
    CodeStr := RegExReplace(CodeStr, "[\s\S]*?(<span[\s\S]*?)</div>[\s\S]*", "<pre class=""code"">`n$1`n</pre>")
    FileDelete, %CodeFile%
    clipboard = %CodeStr%
    ;Author http://cql.cnblogs.com
    

    C++高亮效果如下,同在Notepad++下一样。

    #include <GPL.h>
    #include <free_software.h>
    
    void notepad4ever()
    {
        while (true)
        {
            Notepad++;
        }
    }
    

    使用时将上面提供的ahk代码复制在记事本中,保存为文件名后缀为ahk(如convert.ahk)。先将要插入的代码用Notepad++打开,用Export to HTML导出为html文件(注意:notepad++ 中 export to html乱码的解决办法),再双击运行convert.ahk(也可以设置成快捷键运行),选择刚导出的html文件,则转换后的结果会保存在剪切板中,另外会自动删除导出的html文件。最后在编辑器(我使用的是Windows Live Writer)的源代码模式下粘贴就行了。

    再贴上从YJingLee那里抄来的代码边框样式:

    .code
    {
        font-family: Consolas,'Courier New',sans-serif;
        background-color: #f8f8ee;
        border: solid 1px #e8e7d0;
        padding: 5px 10px 0px 10px;
        min-height: 10px;
        margin-top: 10px;
        margin-bottom: 30px;
        color: #666666;
        border-left: solid 5px #6ce26c;
    }
    

    粘贴在博客后台管理——设置——通过CSS定制页面风格 里就行了。

    最后感谢YJingLee,还有deerchao关于正则表达式的教程及测试器。

    附:AutoHotkey下载http://www.autohotkey.com请选择Unicode版本安装

  • 相关阅读:
    UE4_简易AI_玩家死亡动画bug修复
    UE4_简易AI_Ai攻击
    pikachu-SSRF
    pikachu-XXE漏洞
    pikachu-PHP反序列化
    pikachu-Over permission(越权漏洞)
    pikachu-不安全的文件下载和上传
    pikachu-File Inclusion(文件包含漏洞)
    Web安全之RCF(远程命令,代码执行漏洞)
    Web安全之SQL Inject 2
  • 原文地址:https://www.cnblogs.com/cql/p/2813493.html
Copyright © 2011-2022 走看看