文斯雜談凸^-^凸

何かの犠牲なしに何も得ることができない、
何かを得るためには同等の代価が必要になる。
            --「鋼の錬金術士」

ReText——Linux下的MarkDown利器

尋覓Linux下的MarkDown編輯器

最近由於工作的關係,經常會使用MarkDown寫東西。用MarkDown那就一定離不了支持MarkDown的編輯器。我對MarkDown編輯器的要求只有兩點:

  • 可以自定義CSS,因爲我喜歡用黑色等暗色系的顏色作爲寫作和預覽時的底色
  • 有同步的Live View功能,不是另外啓動瀏覽器預覽html

在Mac和Windows下非常容易就找到了符合以上兩點要求的編輯器——Mac的Mou(完全免費)和Windows下的MarkdownPad(標準版,免費)。它們都是非常優秀的編輯器,關於它們兩就不多說,是該平臺下MarkDown編輯器的不二之選。

由於平時工作至少50%時間還是在Linux下的,如果在Linux也能找到那麼方便的MarkDown編輯器就方便多了。試過很多Linux下的MarkDown編輯器,愣是沒找到像Mou或者MarkdownPad安裝即用的好編輯器。也曾經試過ReText,安裝的確方便,Ubuntu下apt-install retext就可以了,雖然也有Live View(這在Linux下已經非常難得了),但是默認安裝後界面的簡陋,讓我這樣已經被Mac界面寵壞的人難以接受。而且最重要的是在圖形界面配置沒有找到使編輯器底色設爲暗色系的選項,這點直接導致我“放棄”了ReText。

“放棄”ReText後,我試過很多其他解決方案。

在虛擬機中的Windows使用MarkdownPad,現在Linux下的VirtualBox的體驗也還不錯,問題是解決了,但是這樣做感覺非常笨,太過小題大作,果斷放棄。

用在線的雲MarkDown編輯器,寫作的體驗很好,但是還是不太方便,寫點東西就得佔有一個瀏覽器窗口,而我習慣一般寫東西的同時有得開瀏覽器和一些離線的資源(pdf)查資料,用Alt+Tab不斷在瀏覽器、編輯器、pdf中不斷切換。使用在線編輯器後這樣爽快的切換就很難再進行了,最後還是放棄。

使用其他一些誇平臺編輯器的MarkDown插件。我也曾經試過Sublime的sublimetext-markdown-preview之類的插件,第一個問題可以說是完美解決了,但是同步的Live View的需求還是不能滿足,雖然Sublime寫代碼是一流,但是最終還是忍痛放棄了。

重拾ReText

試過了多種方法後,還是覺得原生的MarkDown編輯器靠譜。剛好最近SUSE13.1發佈,安裝過後感覺KDE的用戶體驗上比Ubuntu自己的Unity有過之而無不及。而且本來玩Linux就是爲了折騰,沒有安裝即用的MarkDown編輯器,自己配一個總可以吧。所以最後決定在SUSE上再次挑戰ReText!

安裝

SUSE有自己的一套軟件管理工具,類似Ubuntu的apt-get,這裏就不多做介紹了,直接在終端運行下面命令即可。ReText還是比較流行的Linux軟件,他管理工具一般改一下命令也都應該可以安裝。當然,也可以參考ReText的Page,折騰一下源碼安裝。

sudo zypper install retext

SUSE13.1安裝後的版本爲:
版本
基於Python2.x(ReText最新版本基於Python3.x的)。

配置

默認安裝後的界面還是比較簡陋,所以接下來的重點就是如何給ReText做手術。
在手術前,首先需要弄清楚兩部分東西,一個是界面,一個Live View。 Retext的界面是基於Qt的,而決定Live View外觀的是CSS。
所以如果想要改造ReText就需要從這兩部分着手。
另外,雖然SUSE或者Ubuntu的ReText都有圖形界面的配置畫面,但是配置項目都很少(Ubuntu的稍微多點),但還是不能符合我的期望,因此以下的配置都是按照官方文檔直接修改配置文件的。

配置文件

默認的配置文件在~/.config/ReText project/ReText.conf,其他的具體配置細節可以參考官方文檔
在這裏,我只關心兩個問題——界面與Live View如何配置。

界面

appStyleSheet是關於ReText程序界面的配置。ReText的界面是使用Qt的,因此這個配置實際就是Qt Style Sheets的配置。
像我這樣的懶人,實在不想去折騰Qt Style Sheets語法了,有沒有更簡便的配置方法呢?懷着試一試的心情,去github逛了一下,發現還真有人和我的想法是一樣的——QDarkStyleSheet
這裏我稍微取巧了一下,由於我只需要程序界面的配置,因此我只直接下載Qt的配置qss,然後把ReText的appStyleSheet直接指向該Style Sheet。 ReText.conf配置:

appStyleSheet=/home/kamiiyu/.config/ReText project/style.qss

Live View

與Qt配置同樣的思路,看看github上有沒有現成的好東西。對比Qt配置,MarkDown的css配置是容易找多了。最後我選擇的是markdown-css-themes中的screen.css

ReText.conf配置:

styleSheet=/home/kamiiyu/.config/ReText project/screen.css

大功告成,華麗變身後的ReText,帥多了!
手術前:
原始圖 手術後:
完成圖

以下是我的ReText.conf,僅供參考。

[General]
recentFileList=/home/kamiiyu/kamiiyu.github.com/source/_posts/2013-12-06-retext.markdown
font=\x6587\x6cc9\x9a7f\x7b49\x5bbd\x6b63\x9ed1
fontSize=9
styleSheet=/home/kamiiyu/.config/ReText project/screen.css
appStyleSheet=/home/kamiiyu/.config/ReText project/appstyle.css
restorePreviewState=true
tabWidth=4
saveWindowGeometry=true
windowGeometry=@ByteArray(\x1\xd9\xd0\xcb\0\x1\0\0\0\0\a\x80\0\0\0T\0\0\n\xa3\0\0\x2\xc6\0\0\a\x82\0\0\0k\0\0\n\xa1\0\0\x2\xc2\0\0\0\0\0\0)
previewState=true
useWebKit=true

小遺憾

OPEN SUSE默認安裝的ReText還是有點不盡人意的地方。
例如,滾動左邊的工作區的時候,右邊的Live View並不會相應的自動滾動。ReText的開發Tickets也有人彙報過這個問題,但似乎還是沒有很好的解決。可能是和環境有關係,因爲最新版本的ReText其實已經建議運行在Python3的環境下,但OPEN SUSE默認還是Python2。有機會在Ubuntu在驗證一下這個問題。