在Vim中用Markdown写Hugo

本文介绍Vim写Markdown的基本姿势,以及为Hugo做出的调整。

vim-markdown

在Vim中写Markdown,vim-markdown是一个绕不开的插件。

它不仅提供了Markdown的语法高亮,还提供了代码片的语法高亮!

安装vim-markdown

这里只介绍Vundle.vim这一种方式。 使用其它方式的人,应该也不用介绍。

Plugin 'plasticboy/vim-markdown'

调整

let g:vim_markdown_toc_autofit = 1
let g:vim_markdown_conceal = 0
let g:tex_conceal = ''
let g:vim_markdown_math = 1
let g:vim_markdown_toml_frontmatter = 1

上面的调整,可以通过:help vim-markdown查看详情, 也可以在vim-markdown的README.md中查看。

这里,除了对vim-markdown的行为做了个性化调整, 也为Hugo中TOML形式的Front Matter,提供了支持。

操作

主要操作只有一个,:Toc。 在Quickfix窗口打开一个Table of Content列表。

此外就是[[]],跳转到上一个或下一个标题。

tabular

这是一个自动排列的插件,常用于对齐=:等。

当然,它可以对齐任意符号,包括Markdown表格的|

安装

Plugin 'godlygeek/tabular'

排列表格

在一个表格的第一行,输入命令:Tabularize /|<CR>,即可对齐。

自动对齐

.vimrc中添加这一段,可以在写完表头后,输入|的同时,达到排列的效果。

inoremap <silent> <Bar>   <Bar><Esc>:call <SID>table_auto_align()<CR>a

function! s:table_auto_align()
    let p = '^\s*|\s.*\s|\s*$'
    if exists(':Tabularize') && getline('.') =~# '^\s*|'
                \ && (getline(line('.')-1) =~# p || getline(line('.')+1) =~# p)
        let column = strlen(substitute(getline('.')[0:col('.')],'[^|]','','g'))
        let position = strlen(matchstr(getline('.')[0:col('.')],'.*|\s*\zs.*'))
        Tabularize/|/l1
        normal! 0
        call search(repeat('[^|]*|',column).'\s\{-\}'.repeat('.',position),'ce',line('.'))
    endif
endfunction

在[vimcasts.org]上,有一个著名的视频介绍Aligning text with Tabular.vim。 这一用法,最初就是来源与此。

goyo.vim

goyo.vim,这是一个提高写作专注力的插件。

它把行宽限定为80(可调整),并且调整到最中间。 同时,隐藏了当前编辑区以外的几乎所有内容,令人更专注地写作。

官方展示图:

goyo.vim

Plugin 'junegunn/goyo.vim'
let g:goyo_width = 100

这里,孤把行宽调整为100。

Hugo预览

由于是在Hugo中写作,所以只需要在终端开着hugo server --buildDrafts, 就可以在浏览器里访问(默认的)1313端口,查看保存的转换效果。

如果利用系统的分屏功能,就可以实现左边写作、右边预览的效果。

当然,孤更喜欢用双屏。


相关笔记