我们都看过浏览器中的富文本编辑器,它们允许您以所见即所得的方式编辑彩色/样式文本.但是代码编辑器会在您键入时自动突出显示基于语言规则的代码呢?在textarea中思考Eclipse(但没有重构支持).
这样的事情存在吗?我认为缩放将是一个问题 - 较大的文件将难以有效编辑.
直到最近,我使用以下内容将 Python 代码(空格很重要)发布到 blogspot.com:
<div style="overflow-x: scroll ">
<table bgcolor="#ffffb0" border="0" width="100%" padding="4">
<tbody><tr><td><pre style=" hidden;font-family:monaco;">
my code here
</pre></table></div>
Run Code Online (Sandbox Code Playgroud)
大约一周前,帖子开始获取额外的换行符,因此所有这些都是双倍行距的。使用简单的<pre>标签是不好的(除了失去颜色)b/c 它还导致双换行符,而<code>标签与空白混淆。我想我可以只添加 *4 ---但这是不赞成的或者 HTML 风格的上帝。
对此的标准答案(就像在 SO 上一样)是通过使用 css(我不太了解)来获得语法着色或突出显示,例如在上一个 SO question here 中讨论的那样。我遇到的问题是所有这些解决方案都需要从 Web 上的服务器加载资源。但是,如果(例如 5 年后)该资源消失了,则代码的 html 版本将根本无法呈现。如果我知道 Javascript,我想我可能会解决这个问题。
着色问题本身是微不足道的,可以通过使用<style>具有各种定义的标签来解决。但是解析很困难;至少我在尝试自己解析 Python 方面没有取得太大进展。多行字符串是一种特殊的痛苦。我可以忽略困难的情况并编写简单的情况。
TextMate 有一个命令Create HTML from Document。结果相当冗长,但可以粘贴到帖子中。但是如果你有 3 个代码段,那么它就像 1000 行或其他东西。当然,它是一个文档,因此您必须在粘贴之前进行实际剪切。
有没有简单的 Python 解析器?更好的解决方案?
更新:我编写了自己的语法高亮解析器。也许仍然有点问题,但它非常简单且是一个独立的解决方案。我把它贴在这里。Pygments 也是一个不错的选择。