自动代码标记

时间:2011-09-16 12:58:44

标签: wordpress syntax-highlighting markup

是否有一个工具(类似于StackOverflow上的标记)将代码(基于语法和关键字)转换为标记代码?换句话说,拿一个代码的污点和添加适当的标签和样式,让它显示所有漂亮的颜色(并且可能缩进)?

具体来说,我想要的是至少C#和SQL语言特定(或语言识别)的东西。它可以是WordPress的插件,也可以只是格式化程序,我可以将代码发布到WordPress(或其他地方)。便携性很好。

2 个答案:

答案 0 :(得分:2)

Vim是一个非常好的工具。您不必将其用作编辑器(尽管每个重要的开发人员都应该考虑这样做 - 但我离题了),您可以将其用作纯语法感知的代码到HTML处理器。

例如,使用此Python3脚本(语法着色是通过此列表中的 StackOverflow ):

'Get geocode data from Google'

# See https://developers.google.com/maps/documentation/geocoding

import urllib, urllib2
import json

params = {'address': "1600 Amphitheatre Parkway, Mountain View, CA",
          'sensor': 'false'}

base_url = 'http://maps.googleapis.com/maps/api/geocode/json'
url = base_url + '?' + urllib.urlencode(params)

reply = json.loads(urllib2.urlopen(url).read() )
print json.dumps(reply, sort_keys=True, indent=4, separators=(',', ': '))

使用 Vim 配色方案 Light 此方法产生:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>~/Projects/google/geocoding.py.html</title>
<meta name="Generator" content="Vim/7.3">
<meta name="plugin-version" content="vim7.3_v10">
<meta name="syntax" content="python">
<meta name="settings" content="use_css,expand_tabs">
<style type="text/css">
<!--
pre { font-family: monospace; color: #000000; background-color: #c7c7c7; }
body { font-family: monospace; color: #000000; background-color: #c7c7c7; }
.Constant { color: #bd00bd; }
.Normal { color: #000000; background-color: #c7c7c7; }
.Statement { color: #191970; font-weight: bold; }
.Comment { color: #005500; }
.String { color: #8b4500; }
-->
</style>
</head>
<body>
<pre>
<span class="String">'Get geocode data from Google'</span>

<span class="Comment"># See <a href="https://developers.google.com/maps/documentation/geocoding">https://developers.google.com/maps/documentation/geocoding</a></span>

<span class="Statement">import</span> urllib, urllib2
<span class="Statement">import</span> json

params = {<span class="String">'address'</span>: <span class="String">&quot;1600 Amphitheatre Parkway, Mountain View, CA&quot;</span>,
          <span class="String">'sensor'</span>: <span class="String">'false'</span>}

base_url = <span class="String">'<a href="http://maps.googleapis.com/maps/api/geocode/json">http://maps.googleapis.com/maps/api/geocode/json</a>'</span>
url = base_url + <span class="String">'?'</span> + urllib<span class="Normal">.</span>urlencode(params)

reply = json<span class="Normal">.</span>loads(urllib2<span class="Normal">.</span>urlopen(url)<span class="Normal">.</span>read() )
print json<span class="Normal">.</span>dumps(reply, sort_keys=<span class="Statement">True</span>, indent=<span class="Constant">4</span>, separators=(<span class="String">','</span>, <span class="String">': '</span>))

</pre>
</body>
</html>

请注意,每个语法元素在CSS样式部分都有一个颜色,如果您不想使用 Vim 颜色方案,可以在html中调整它。

以下是您在浏览器中看到的内容。我已将其剪裁为图像以避免颜色从 StackOverflow 发生变化:

HTML syntax highlighting

以下是如何操作:

  1. 安装Vim gui。官方Vim download page将帮助您入门。如果你不能使用gui,希望不会丢失,我会在下面评论这个案例。
  2. 选择所需的语法颜色。我使用this page来选择和下载配色方案。您将颜色方案文件放在~/.vim/colors目录中,或者放在%USERPROPFILE%/vimfiles/colors
  3. 中的Windows中
  4. 启动 Vim
  5. 加载要进行语法颜色标记的源代码。您可以使用:e <file path>命令执行此操作,其中<file path>是源文件的位置。 Vim gui's还会提供打开文件的菜单命令,您可能更喜欢这样做,以便浏览文件系统。
  6. 加载配色方案。键入:color <name>,其中<name>是您在步骤2中保存的配色方案,没有.vim扩展名。例如,我使用:color synic加载~/.vim/colors/synic.vim中的配色方案。 (在 Vim 中,':'使您进入“命令模式”。当您输入命令并按<return>时,您将返回所谓的“正常模式”。)
  7. 告诉 Vim 使用命令:TOhtml生成html。将打开一个新窗口,您将看到html标记。执行_Vim_commands时一定要使用正确的大小写。
  8. 您的光标应位于带有标记的新窗口中。使用gui的文件菜单保存,或输入命令:w <file path>
  9. 或者,如果您希望在生成的HTML中显示行号,请在:set number之前使用:TOhtml命令。

    如果在设置颜色方案后没有看到语法颜色显示,请尝试使用命令:syntax on。如果您正在为vim无法识别的语言或文本格式进行语法着色,则可以在Web上找到该语言的语法文件。有关如何安装语法文件的详细信息超出了我想要写的内容,但您最喜欢的搜索引擎在该主题上有很多。尝试搜索vim <mylang> syntax。要查看 Vim 认为您拥有的语言,请使用命令“:set ft?”。

    如果像我一样,您更喜欢使用Vim的终端形式,还有一点需要考虑。您无法创建终端不支持的颜色。大多数终端应用程序提供2种,16种或256种颜色。使用说明here Vim 输出256种颜色(如果尚未输出)。并非所有的配色方案都能在开箱即用的终端上运行良好,但this page上的说明有很大帮助,尽管它们是在考虑更有经验的 Vim 用户的情况下编写的。运行 Vim 教程(:help tutorial)是个好主意,如果你必须做的比我在上面的步骤中所做的更多。

答案 1 :(得分:1)

我个人喜欢这个脚本:http://softwaremaniacs.org/soft/highlight/en/