顯示具有 編輯器 標籤的文章。 顯示所有文章
顯示具有 編輯器 標籤的文章。 顯示所有文章

2016年9月20日 星期二

[超譯]設定vscode markdown 環境

[超譯]VS code 的 markdown

譯序

參考文件是 https://code.visualstudio.com/docs/languages/markdown
內建支援 preview (預覽),也可多裝 extension 加強能力。
本來是想寫心得的,不小心就變超譯了。既然是超譯,就代表有些地方我會增減。有興趣還請看原文。

前言

在 Visual Studio Code 裡使用 markdown 可以非常有趣,也有很多 markdown 的特色讓你更有生產力。

markdown extension

內建的功能之外,還有一些 extension 增加功能。

譯註:這段在文章裡是動態產生一組 markdown 相關的 extension 列表,所以會是什麼會隨時間演進。

開啟預覽

要開一個預覽是用 ctrl-shift-v,會多開一個 tab (頁籤) 顯示。這個我覺得不好用,我喜歡 side by side (也就是視窗並列)的方式。按鍵是 ctrl-k v (先按 ctrl-k,然後放開,再按 v,這個不能在中文輸入法裡,如果卡在輸入法中,會抓不到 v 這個鍵) 叫出視窗並列的預覽。

使用自己的 css

可以改變預覽的樣子,當然,對於後續的編譯成 html 也有用途。要更新 "markdown.styles": [] 的設定。

例如我有一個 css 長這樣:

body {
    font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

h1 {
    color: cornflowerblue;
}

用 File > Preferences > Workspace Settings 開啟設定 settings.json 更新裡面的內容為:

// Place your settings in this file to overwrite default and user settings.
{
    "markdown.styles": [
        "Style.css"
    ]
}

## snippets for markdown
有幾個內建的 snippets,用 ctrl-space 來驅動,這就會依語境提供一串建議。

譯註:ctrl-space 在中文輸入法啟用的時候,悲劇。

編譯成 html

VS code 整進一個 task runner 可以用它與 markdown 編譯器合作完成編譯工作。可以把 .md 檔變成 .html 檔。

  1. 背後是使用 node.js 來處理,所以要安裝 node.js 之外,再加上 marked。用 npm 安裝 npm install -g marked
  2. 建立一個 md 檔。記得開啟一個「目錄」再開一個新檔案 sample.md (多餘的我不想翻…) 把底下的文字放進去:

    Hello Markdown in VS Code!
    ====================
    
    This is a simple introduction to compiling Markdown in VS Code.
    
    Things you'll need:
    
    * [node](https://nodejs.org)
    * [marked](https://www.npmjs.com/package/marked)
    * [tasks.json](/docs/editor/tasks)
    
    ## Section Title
    
    > This block quote is here for your information.
    
  3. 建立 task.json。打開 Command Palette (用 ctrl-shift-p),然後在裡打字 Configure Task Runner,然後按 enter。它會列出可能的 tasks.json 模板,選 Others,因為我們要執行外部命令。這會在你的 Workspace 的 .vscode 目錄裡產生一個 tasks.json 檔案,長成這樣:

    {
        // See http://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "0.1.0",
        "command": "echo",
        "isShellCommand": true,
        "args": ["Hello World"],
        "showOutput": "always"
    }
    

    因為我們要使用 marked 編譯 markdown 檔,所以要改成以下這樣:

    {
    // See http://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "0.1.0",
    "command": "marked",
    "isShellCommand": true,
    "args": ["sample.md", "-o", "sample.html"],
    "showOutput": "always"
    

    }

    這設定的意思是把 marked 當成一個外部任務執行者,只執行一項任務,把 markdown 檔編譯成 html 檔,它的命令是 marked sample.md -o sample.html

  4. 執行建立任務。以上只是在檔案裡設定,要執行它可以按 ctrl-shift-b (Run Build Task)。此時,你應該可以看到一個增加的 sample.html 檔案出現在檔案列表裡。

    這個範例不會出現什麼問題所以執行任務完會有對應的 sample.html 被建立。

自動編譯

再進一步,想要自動編譯的話,需要多做些事。

  1. 加裝 gulp npm install -g gulp gulp-markdown。多裝 gulp-markdown 會讓事情簡單一點。

  2. 建立 gulp task。在 simple.md 那個目錄開新檔案 gulpfile.js。把以下內容放進去:

    var gulp = require('gulp');
    var markdown = require('gulp-markdown');
    
    gulp.task('markdown', function() {
        return gulp.src('**/*.md')
            .pipe(markdown())
            .pipe(gulp.dest(function(f) {
                return f.base;
            }));
    });
    
    gulp.task('default', function() {
        gulp.watch('**/*.md', ['markdown']);
    });
    

    以上程式會做這些事:

    1. 在 Workspace 裡看哪些檔案有變動。
    2. 把有改變的 markdown 檔案們,用 markdown 編譯器處理一遍。(gulp-markdown)
    3. 這樣我們就會有一堆名字對應的 markdown 檔與 html 檔在同一目錄裡。
  3. 修改 tasks.json 以完成監視。要完整把任務整合進 VS code,還需要修改任務設定。改成以下的樣子:

    {
        "version": "0.1.0",
        "command": "gulp",
        "isShellCommand": true,
        "tasks": [
            {
                "taskName": "default",
                "isBuildCommand": true,
                "showOutput": "always",
                "isWatching": true
            }
        ]
    }
    
  4. 執行 gulp Build Task。以上仍是一個檔案內的設定,要執行它要按 ctrl-shift-b (Run Build Task)。但這次我們是設定一個監視,所以 Status Bar 應該會在左手邊指示。

    現在,如果建立或改變其他的 markdown 檔,你會看到對應的 html 被產生出來或是存檔時反應改變。你也可以啟用 Auto Save 讓事情更流暢。

    如果你要停止監視,你可以按 ctrl-shift-b,然後在 message box 裡點 Terminate Running Task。或者你可以用 Command Palette (用 ctrl-shift-p 叫出來),然後找到 terminate command。

接下來

你可以往下看的是:

幾個常見問答

  • 有無拼字檢查?
    • 內建沒有,但是可以加裝 spell checking extension
  • 有無支援 github 風格的 markdown?
    • 沒有,VS code 以支援 CommonMark 為目標,使用 markdown-it 函式庫(它實作 CommonMark 標準)。
  • 上面的過程裡我在 Command Palette 找不到 Configure Task Runner 命令?
    • 你應該是一開始選擇開啟檔案,而不是開啟目錄。你可以用 File > Open Folder…開啟目錄,或是用命令列 cd 到目的地,再執行 code . 開啟目錄。

2016年9月12日 星期一

[atom]設定 python 開發環境

前言

要知道好不好用,就得用心體會,就拿來試試開發 python 程式吧。

材料

谷歌到一系列 youtube ,就照本宣科試試。

https://www.youtube.com/watch?v=uve1tjVIQ6c

步驟:格式設定

  1. 顯示縮排的尺 (Show Indent Guide)。 在 1.10.2 的版本是放在 Settings > Editor 這裡。
  2. 使用 Soft Tabs
  3. Tabs length 設成 4

步驟:套件安裝

  1. 啟用 autosave。對 Settings 也要啟用。
  2. 安裝 atom-runner。這個可執行 python。如果你是 apple 系統,要在 config 加東西,請參照影片。

步驟:執行

  1. 寫一段程式

    import random
    
    for i in range(5):
        print(random.random())
    
  2. 執行請按(我是用 windows) alt-r

還有 autocomplete 與 debugger

autocomplete 與 refactor

照那個 youtube 設定只有能執行 python。但是沒有加裝 autocomplete-python 這個套件的話,基本上它所提示的只是你已經輸入過的關鍵字,當然不夠用。「跳到定義去 go-to-definition 」這個 IDLE 沒有的夢幻功能就可以用 ctrl-alt-g 來使用。因為一次按三個按鍵太糟,請安裝 hyperclick 套件,這樣就可以按住 ctrl 用滑鼠去點你想找定義的關鍵字。

https://atom.io/packages/autocomplete-python

為了寫程式 refactor 方便,Python Tools 加進來是最好的。

https://atom.io/packages/python-tools

debugger

debugger 目前有兩個套件,我選擇 https://atom.io/packages/python-debugger 。我不選 https://atom.io/packages/atom-python-debugger 的原因是不想多改 code 插 trace。

python-debugger 它使用的 alt-r 與 atom-runner 重覆,所以必須要使用選單 Packages > python-debugger > Toggle 來開啟執行視窗。這是要注意的地方。如果直接按 alt-r 會直接執行 python code。

[atom]編輯器體驗

起因

之前網路上看到有人把 sublime 跟 atom 比,才知道 github 出了一個 atom editor。但還沒有想要用看看。但是後來遇到朋友已開始用了,所以也來試試看,主要想要看看它能否當做 python IDE 與 markdown 編輯器。

背景

因為我會常常在 windows, linux, mac 環境跑來跑去。所以會需要一個通用的編輯器。我現在是在 windows 裡裝 notepad++,在 linux 用 pico/vi/gedit,在 mac 則是用 python IDLE 來暫用。目前來說,我在 mac 開文章的機會非常少,多是開來寫 python 所以就是用 python IDLE 就好了。原本有考慮 sublime,但是要讓我碰到的電腦都要裝 sublime 的話又好像太過份。而且 sublime 在討論上、套件上又好像比較少,也許是因為它屬於專有軟體的關係。所以,先試試 atom。他的用戶多,套件也會比較多一點。將來若是有自己開發套件,要連同主體一起散佈的話,也比較不會被說話。當然,應該也可以開發 sublime 套件,要賣給別人的時候請客戶再多付 sublime 的錢。這個方面我要再多些時間考慮。

擴充性

以擴充性來說,我當然還是喜歡 sublime 的 python api。atom 是用 node.js,對我來說還是不如 python 習慣。尤其 javascript 的非同步特性是不是合適套件開發,這不試過真不知道。

markdown 支援

最近喜歡使用 markdown 來寫文章,atom 上有官方內建的 markdown preview,也有社群加強版的 markdown preview plus。而 sublime 就要找看看。這也就是我會選擇多數人用的原因,這樣比較容易 google 到套件及使用方法。少人用的就會難找及難學。從 markdown 的角度來看,現在是有免費線上的 StackEdit 可用,但是若要固定下來,的確還是選執行檔編輯器會比較好。

ps. 其實 sublime 的 markdown preview 用 google 一下就出來了。https://www.youtube.com/watch?v=XnPkdcBGBlw 。但是它的 preview 不是即時,也不是在 sublime 裡,而是讓你指定轉成 html ,再用瀏覽器開啟。(也可以換成其他格式再用其他程式開啟。)這樣就不如 atom 的好了。

小發現

現在使用上有幾個感覺:
* 啟動比 notepad++ 慢很多,跟 jedit 有得拼了(比慢)。
* 一開始中文字型怪怪的。也許用到大陸字體,「置」這個字裡面是一豎而不是兩個橫。
於是按照以下連結,改成 Noto Sans CJK TC。
http://lsymind.blogspot.tw/2015/06/atom_22.html

官方說明文件

https://atom.io/docs