5
5

More than 5 years have passed since last update.

TracのWikiをVimで書くときのはなし

Posted at

It's All Text

TracのWikiやTicketで長文を書きたい時は、Firefoxの It's All Textを使ってVimで書いています。
*.tracという拡張子でファイルを作成できるように設定しています。

シンタックスハイライト

TracのWikiはMoinMoinベースなので、MoinMoin用のシンタックスハイライトが使えます。

moin.vim をsyntaxフォルダに置けばOK。
(参考) http://moinmo.in/VimHighlighting

拡張子moin、tracのファイルはMoinMoinとして扱われるように設定しておきます。

au BufNewFile,BufRead *.moin setf moin
au BufNewFile,BufRead *.trac setf moin

おりたたみ

各見出しをおりたためるようにするために、以下のような設定をvimrcに追加しています。


au FileType moin setl foldmethod=expr foldexpr=FoldMoinHeading(v:lnum)

function! FoldMoinHeading(lnum)
    let line = getline(a:lnum)
    let match = matchstr(line, '^\zs\(=\{1,5}\)\ze\s\+.*\s\+\1\s*\(#.\+\)\=$')
    if len(match) <= 1
        return '='
    else
        return '>' . (len(match) - 1)
    endif
endfunction

こんな感じになります。
folding

ちなみに、Tracとは関係ありませんが、同じように以下の設定でMarkdown形式の見出しを折りたためるようになります。

au FileType markdown setl foldmethod=expr foldexpr=FoldMarkdownHeading(v:lnum)

function! FoldMarkdownHeading(lnum)
    let line = getline(a:lnum)
    let match = matchstr(line, '^\zs\(#\{1,6}\)\ze\s')
    if len(match) <= 1
        return '='
    else
        return '>' . (len(match) - 1)
    endif
endfunction

スニペット

rstブロック、とくにlist-tableディレクティブを多用するので、neosnippetを使って以下のようなスニペットを定義しています。

moin.snip
snippet rst
    {{{
    #!rst
    ${1}
    }}}

snippet ltbl
    {{{
    #!rst
    .. list-table::
       :width: 

       ${1}
    }}}

snippet img
    [[Image(${1})]]

snippet rimg
    :code-block:`Image:${1}`
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5