Vim與Markdown,實現鍵不離手

Vim與Markdown,實現鍵不離手

4 人贊了文章本文首發於簡書(Vim與Markdown,實現鍵不離手)。

Vim作為坊間流傳的編輯器之神,能在雙手不離開鍵盤的情況下實現各種高效的文本編輯操作以及幫助烏干達的可憐兒童;Markdown作為一種非常簡單的標記語言,能在不需要滑鼠指指點點的情況下就完成一篇漂亮的排版文章。那麼,結合Vim和Markdown,基本就可以達到傳說中的"鍵"不離手了!

筆者作為一個Vimer,使用Vim來寫Markdown筆記也有一段時間。下面總結了一些自己的經驗,希望能幫助同樣需要Vim和Markdown的你!

語法高亮

作為純文本格式,如何在Markdown文檔中快速找到所需要的內容,是影響Markdown編輯體驗的一個關鍵因素。作為最佳的狀態,如果編輯時能提供和閱讀時一樣的排版或樣式,那麼Markdown的編寫就可以既高效又簡潔美觀了。因此,一個好的Markdown編輯器應該能儘可能地減小Markdown作為標記語言與生俱來的 編輯與閱讀之間的割裂感。

語法高亮是一個比較好的折中的解決方案。試想,如果加粗、斜體等都使用粗體和斜體來高亮,代碼塊、鏈接等都使用和渲染時差不多的樣式來高亮,那麼其實編輯和閱讀也就差不多都是那麼回事了。至於說「折中」,是因為有部分流行的Markdown編輯器完全採用 所見即所得 的方式,編輯時,輸入一個文本後馬上渲染為對應的HTML顯示;對於這種做法,見仁見智,但是我覺得和Markdown的設計理念背道而馳,可以說是另一個極端。

Vim本來也支持Markdown的語法高亮,但是做得還不夠好。我使用gabrielelana/vim-markdown 插件來增強高亮。另外, 為了滿足其他一些需要,我Fork了該插件進行了一些改進tamlok/vim-markdown。

另外,使用的配色方案是tamlok/detorte.該配色方案支持亮色和暗色兩個主題,相對比較柔和。對上面提到的vim-markdown插件專門適配過。

先上圖再說話:

可以看到:

  1. 文中的normal modeinsert mode都是粗體顯示,組合命令則是斜體顯示;這樣,既沒有*號標記干擾視線,也能一目了然地抓住重點。
  2. 標題根據不同的層級,也有區分,且以粗體顯示;醒目地將一篇文章劃分為多個小節,凸顯文章的整個結構脈絡。
  3. 對於Markdown中的行內代碼,如N<command>,則使用類似閱讀時的樣式來顯示(灰底)。
  4. 文中的列表的頭部、表格、鏈接等都通過高亮來體現出非常好的區分度。
  5. 利用Vim的 Conceal 特性,適當地隱藏了一些標記,如粗體的**、斜體的*、行內代碼的標記和鏈接的URL部分等。如此一來,就能避免大量的標記喧賓奪主。

總的來說,通過語法高亮, 基本就讓我們很容易在視覺上抓住文章的骨架和結構了。

代碼高亮

代碼塊的代碼高亮也是可以有的。推薦一個插件joker1007/vim-markdown-quote-syntax,支持代碼塊內的代碼語法高亮。如下圖:

大綱

大綱有助於寫文章時能時刻抓住文章的結構,對文章有一個整體的控制。

對於Vimer來說,提到大綱,估計第一反應就是大名鼎鼎的majutsushi/tagbar (什麼?並沒有想到tagbar?你是不是emacs的卧底?)但是,該插件默認是不支持Markdown的。

其實,主要產生ctags格式的輸出,tagbar就能渲染。網上已經有很多教程,例如只要添加markdown2ctags.py就可以實現在tagbar

中顯示Markdown的大綱目錄了。

效果如下:

渲染閱讀

因為經常需要在Windows和Linux上工作,因此需要一個同時支持這兩個平台的渲染插件。

iamcco/markdown-preview.vim 是一個同時支持Windows, Linux和MacOS的Markdown預覽插件。通過以下配置,基本就可以做到一個按鍵預覽當前筆記了。

let g:mkdp_path_to_chrome="chrome"let g:mkdp_auto_close=0nmap <F7> <Plug>MarkdownPreviewnmap <F8> <Plug>StopMarkdownPreview

筆記管理

筆記管理直接使用插件scrooloose/nerdtree即可。該插件還支持收藏夾,可以對應到筆記本的概念。

查找

Vim有著強大的查找、搜索功能,所以對於純文本的Markdown來說,完全可以拿過來用。這裡就不多啰嗦了,比如:vimgrep, ggreer/the_silver_searcher等。

結語

折騰下來,Vim下編輯Markdown筆記完全是沒有任何問題的,特別是語法高亮和Conceal特性,可以儘可能地減小Markdown與生俱來的割裂感。

不過,實在遺憾的是GVim也不支持顯示圖片,否則,如果能在編輯的時候就預覽圖片鏈接,將會是多麼美好呀?另外,對於圖片,也是需要手動管理,這也是一個缺憾。

工作中,我使用這套解決方案來記錄Markdown筆記大概差不多兩個月。後來,實在忍不住,基於Vim的這些優點折騰了一個Markdown筆記軟體VNote,結合網盤同步,在工作中完全取代了某雲某知了啦!

VNote

如果你認同以上幾點Markdown編輯理念,那麼你絕對需要下載VNote來嘗試嘗試。

廣告時間~VNote: 一個舒適的Markdown筆記軟體。這篇介紹文章寫於兩個月前。經過兩個月的開發,目前VNote已經基本可以算是麻雀雖小五臟俱全了。藉助於Vim的一些優點,也能做到「鍵」不離手,比如:

  • 艦長模式

    藉助前導鍵Ctrl+E,進入艦長模式。在該模式中,我們有26個字母可以分配快捷鍵,實現如單面板、退出、顯示工具面板等操作。
  • 高效的標籤頁跳轉

    Ctrl+E 1 跳轉到第1個標籤頁;Ctrl+E 9跳轉到第9個標籤頁;Ctrl+E 0在當前標籤頁和前一個標籤頁之間輪換!在需要參考多個筆記的時候,特別方便使用!
  • 導航模式

    Ctrl+E W進入導航模式。該模式類似於Vim下的插件easy-motion,在一些主要部件上顯示兩個字母,鍵入這兩個字母即可跳轉到對應部件上。

VNote雖然一直都在努力完善,包括不斷借鑒Vim的優點和使用經驗。但是有一個很嚴重的問題,就是不能幫助烏干達的可憐兒童!~~


推薦閱讀:

Typora+堅果云:支持markdown的雲筆記搭建
富文本
快速入門Markdown
Markdown基本規則
如何評價 VuePress?

TAG:Vim | Markdown | 筆記類應用 |