子曰: 工欲善其事,必先利其器。作為碼農一枚,再加上站長這個已經不再光鮮的稱呼,豈能沒有一款經濟實用、操作簡單、而且功能必須強大、樣式也必須好看的Wordpress代碼高亮插件?!作為一個視代碼如生命的碼農,把代碼整的漂漂亮亮是一件多么神圣和偉大的事情啊!
今天就給大家推薦一款這樣的代碼高亮插件:SyntaxHighlighter Evolved。相信我, 功這款插件能強足夠大、并且簡單易用,絕對值得推薦。本站就是用的這款插件,大家可以看看“生病的JavaScript代碼”,這就是最好的例子。
插件介紹
插件名稱:SyntaxHighlighter Evolved
插件作者:Viper007Bond, automattic
作者主頁:http://www.viper007bond.com/wordpress-plugins/syntaxhighlighter/
插件類型:代碼高亮
中文支持:支持
安裝環境:WordPress2.7或以上版本,經過我自己的測試,在3.3和3.4上都可以正常運行
下載地址:點擊這里下載最新版
SyntaxHighlighter Evolved基于開源的JS核心庫:SyntaxHighlighter JavaScript package by Alex Gorbatchev二次開發擴展的。安裝后只需簡單設置一下,不用修改任何代碼即可達到很好的效果。
功能特效
說起SyntaxHighlighter Evolved的特效,忍不住要“炫耀”一下。不說不足以讓你感受到SyntaxHighlighter Evolved的強悍功能。SyntaxHighlighter Evolved的功能特效如下:
??? 代碼高亮
??? 支持Eclips、Emacs等多種樣式,可搭配不同風格的主題
??? 特色——顯示工具條。右上角顯示工具條,可以”查看源代碼”、”復制源代碼”、”打印源代碼”。(只有第2版支持)
??? 顯示行號
??? 長代碼自動換行(只有第2版支持)
??? 可以點擊代碼中的超文本鏈接
??? 可以收縮代碼框
??? 高亮顯示模式—某一行高亮
??? 設置開始行號
??? 自定義樣式
特效演示
只要做Web應用的,無論是JSP,還是PHP,甚至ASP.NET,都會用JavaScript代碼。所以,就是用JavaScript代碼來演示SyntaxHighlighter的功能吧。要實現的功能是計算第N個斐波納契數列(Fibonacci Sequence)數列的值。同時,我們要求文件名顯示為:FibonacciSequence.js;代碼的第二行高亮顯示。則實例如下:
function fib(n) { return n<2 ? n : fib(n-1) + fib(n-2); } function fib(n) { return n<2 ? n : fib(n-1) + fib(n-2); }
?
怎么樣,你是不是已經被SyntaxHighlighter強大功能震撼了?也許你已經好奇,這是如何實現的?我們接下來就介紹SyntaxHighlighter的使用方法。
安裝方法
只需要在后臺插件里搜索“SyntaxHighlighter Evolved”之后點擊安裝,啟用即可。
使用方法
使用方法很簡單。在發布文章時,在“HTML”編輯模式下(注意:不是CKEditor等富文本編輯模式;防止讓這些富文本編輯器把代碼轉義了。),使用如下代碼,把需要展示的代碼包含起來即可:(注意:把前面的@符號去掉。)
??? [@java]這里寫你的代碼[/java]
??? [@css autolinks="false" classname="myclass" collapse="false" firstline="1" gutter="true" highlight="1-3,6,9" htmlscript="false" light="false" padlinenumbers="false" smarttabs="true" tabsize="4" toolbar="true" title="example-filename.php"]這里寫你的代碼[/css]
??? [@code lang="js"]這里寫你的代碼[/code]
??? [@sourcecode language="plain"]這里寫你的代碼[/sourcecode]
??? 推薦使用這種方式。這種使用方式,見"最佳實踐"
其實,在網上,搜“SyntaxHighlighter 使用方法”就會出現一堆結果,里面大多時對于這些使用方法的羅列。很少去講解這些配置項的意思和說明。下面,我將針對這些配置進行詳細說明。同時,針對這些配置的使用,我總結了SyntaxHighlighter使用方法的最佳實踐。如果急于知道結果,可以直接查看“最佳實踐”。
配置詳解
代碼樣式配置
表-1-SyntaxHighlighter配置參數表
簡碼 | 默認值 | 含義說明 | V2支持 | V3支持 |
---|---|---|---|---|
lang | 無 | 說明代碼塊是哪種語言? | 支持 | 支持 |
autolinks | true | Toggle automatic URL linking. 是否自動將網址轉換為鏈接。 默認轉換。可以后臺管理頁面修改默認值。? 示例:點擊查看 | 支持 | 支持 |
classname | 無 | Add an additional CSS class to the code box. 允許你添加一個或多個自定義的樣式。 默認沒有。可以后臺管理頁面修改默認值。 示例:點擊查看 | 支持 | 支持 |
collapse | ? | Toggle collapsing the code box by default, requiring a click to expand it. Good for large code posts. 是否默認折疊代碼段。如果折疊,這需要一個“點擊”操作,才能展開。非常適合有大段代碼的文章。默認不折疊。可以后臺管理頁面修改默認值。? 示例:點擊查看 | 支持 | 支持 |
firstline | 1 | An interger specifying what number the first line should be (for the line numbering). 設置起始行的行號。 示例:點擊查看 | 支持 | 支持 |
gutter | ? | Toggle the left-side line numbering. 是否顯示行號。默認顯示。可以后臺管理頁面修改默認值。? 示例:點擊查看 | 支持 | 支持 |
highlight | 無 | A comma-sperated list of line numbers to highlight. You can also specify a range. Example:?2,5-10,12 需要高亮顯示并使用逗號分隔的行號。同時,也支持區間(開始行號-結束行號)。例如:2,5-10,12。? 示例:點擊查看 | 支持 | 支持 |
htmlscript | ? | Toggle highlighting any extra HTML/XML. Good for when you're mixing HTML/XML with another language, such as having PHP inside an HTML web page. The above preview has it enabled for example. This only works with certain languages. 是否高亮顯示功能任何額外的HTML / XML。特別適合混合HTML/XML與另一種語言混合的情況下。如在HTML代碼中含有部分PHP代碼。注意,這僅僅適用于特定的語言。 示例:點擊查看 | 支持 | 支持 |
light | false | ?Toggle light mode which disables the gutter and toolbar all at once. 是否顯示高亮模式。默認是關閉。可以后臺管理頁面修改默認值。 | ? | ? |
padlinenumbers | off | Controls line number padding. 設置行號的格式化,前面是否補零。默認是關閉。可以后臺管理頁面修改默認值。 | 支持 | 支持 |
title | 無 | Sets some text to show up before the code. 設置文本的標題。默認沒有。可以后臺管理頁面修改默認值。 | 不支持 | 支持 |
toolbar | false | ?Toggle the toolbar (buttons in v2, the about question mark in v3) 默認不顯示。可以后臺管理頁面修改默認值。? 示例:點擊查看 | 支持 | 不支持 |
wraplines | false | Toggle line wrapping. 是否開啟自動換行。可以后臺管理頁面修改默認值。 | 支持 | 不支持 |
smarttabs | true | Allows you to turn smart tabs feature on and off.? Click here ?for a demo.智能制表符 | 支持 | 不支持 |
tabsize | 4 | Allows you to adjust tab size.? Click here ?for a demo.制表符的長度。 | 支持 | 不支持 |
顏色主題
目前IT行業中,常用的語言有幾十種;使用的開發環境也多種多樣,比如開發Java的也許用Eclipse的比較多;但是在Linux下做C/C++開發的也許用Emacs等。見過這些開發環境的人都知道,這些開發環境的高亮模式、顏色等都是不一樣的。習慣了Eclipse的人很難適應Emacs;反之亦然。SyntaxHighlighter考慮的很周全,她在內部直接繼承了大概其中這樣的顏色主題來供大家選擇。大家可以在后臺的管理頁面輕松的選擇自己喜歡的“顏色主題”來進行顯示。“顏色主題”列表如下:(排名部分前后。呵呵)
??? Default
??? Django
??? Eclipse
??? Emacs
??? Fade to Grey
??? Midnight
??? RDark
??? None
語言別名
從事IT行業的朋友也許都知道,由于歷史等原因,一個語言可能有好幾個名字。比如JavaScript,微軟山寨了個JScript;后來經過ECMA標準化之后,名字又稱了ECMAScript;我們大家平時還簡稱成JS。這就給我們在使用SyntaxHighlighter的語言代號時,造成了一定的困難:不知道到底該用哪個名字才是“正確”的。
其實,這點SyntaxHighlighter也考慮到了。她通過“語言別名”的方式很好的解決了這個問題。
表-2-SyntaxHighlighter中“語言別名”和“語言代碼”對應表
語言別名 | 語言代碼 | 說明 |
---|---|---|
as3 | as3 | 不知道是否支持AS2? |
actionscript3 | as3 | |
bash | bash | 竟然還支持Shell. |
shell | bash | |
coldfusion | coldfusion | ? |
cf | coldfusion | |
clojure | clojure | ? |
clj | clojure | ? |
cpp | cpp | ? |
c | cpp | ? |
c-sharp | csharp | ? |
csharp | csharp | |
css | css | ? |
delphi | delphi | 看來Delphi和Pascal確實有一腿啊! |
pas | delphi | |
pascal | delphi | |
diff | diff | ? |
patch | diff | ? |
erl | erlang | ? |
erlang | erlang | ? |
fsharp | fsharp | ? |
groovy | groovy | ? |
java | java | ? |
jfx | javafx | ? |
javafx | javafx | |
js | jscript | 從這里可以看出,針對JavaScript的代碼,寫js行,寫javascript行,甚至是微軟的jscript都行。 |
jscript | jscript | |
javascript | jscript | |
latex | latex | Not used as a shortcode |
tex | latex | ? |
matlab | matlabkey | ? |
objc | objc | ? |
obj-c | objc | |
perl | perl | ? |
pl | perl | |
php | php | ? |
plain | plain | ? |
text | plain | ? |
ps | powershell | ? |
powershell | powershell | |
py | python | ? |
python | python | |
r | r | Not used as a shortcode |
splus | r | ? |
rails | ruby | 針對Ruby的。 |
rb | ruby | |
ror | ruby | |
ruby | ruby | |
scala | scala | ? |
sql | sql | ? |
vb | vb | ? |
vbnet | vb | |
xml | xml | 針對XML、HTML以及XHTML等,其實都是按照XML來處理的 |
xhtml | xml | |
xslt | xml | |
html | xml | |
xhtml | xml |
從這個表中,我們也可以看出SyntaxHighlighter支持的編程語言多達二十五種語言:AppleScript、 ActionScript、 Bash、 ColdFusion、 C /C++、 C#、 CSS、 Delphi、 Diff(不知道這是不是一種編程語言)、 Erlang、 Groovy、 Java、 JavaFX、 JavaScript、 Perl、 PHP、 PowerShell、 Python、 Ruby、 Sass、 Scala、 SQL、 VB、 XML。
最佳實踐
經過配置的講解,我們可以明白,SyntaxHighlighter已經遵循了軟件工程中的最佳實踐“約定大于配置”。其實,我們并不需要過多地去設定SyntaxHighlighter的配置,只需要設定一些“實在沒辦法約定”的配置項即可。比如:title、highlight等。另外,經過我自己的實際測試,我還發現了第五種使用方法,其實,我們可以在[代碼名稱]這個標簽中,添加剛剛講到的配置配置項。當然,lang就沒必要了。因為這里已經通過“標簽名”指定過了。綜上所述,SyntaxHighlighter使用方法的最佳實踐如下:(下面以Java代碼為例)
[@java title="自定義的文件名" highlight="高亮的行"] 這里寫你的代碼 [/java]
有時,我們并不需要一定有高亮強調的行,這是highlight就可以省略掉。另外,如果你需要自定義樣式,可以添加class屬性。不過,我個人覺得必要性不大。
特效擴展
??? 設置背景樣式
??? 大家在 "生病的JavaScript代碼" 也許會發現高亮部分的背景顏色比較深,也許有一些人看著不舒服(我個人就覺得顏色有點深)。也許就有人想修改高亮行的背景色。這是,就可以通過修改插件自帶的CSS文件,來實現自定義樣式的功能。
??? 在線操作方式是:登錄Wordpress后臺管理頁面,插件-編輯-選擇SyntaxHighlighter-選擇syntaxhighlighter/syntaxhighlighter2/styles/shThemeDefault.css-找到
.syntaxhighlighter .line.highlighted.alt1,
.syntaxhighlighter .line.highlighted.alt2
{
background-color: #e0e0e0 !important;
}
將其修改為:
.syntaxhighlighter .line.highlighted.alt1,
.syntaxhighlighter .line.highlighted.alt2
{
background-color: #6CE26C !important;
}
??? 重起見,D瓜哥不建議做這個修改。如果以后修改“顏色主題”可能會帶來一點的不良影響。
??? 實現圓角和陰影
??? SyntaxHighlighter的“容器”樣式是一個方方正正。也許不如圓角、立體陰影效果漂亮。這個效果也很容易實現。只需要修改syntaxhighlighter的樣式即可;不過,這個修改是在主題的style.css文件做的。修改方式如下:將以下代碼添加到主題的style.css文件里面:
.syntaxhighlighter{
padding: 10px 0 !important;
box-shadow: 1px 1px 3px #ccc;
-webkit-box-shadow: 1px 1px 3px #ccc;
-moz-box-shadow: 1px 1px 3px #ccc;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
