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
ちなみに、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}`