reStructuredText のヘッダを書く
http://blog.tuxcoder.com/2008/12/vim-restructure-text-macros.html を参考に、日本語タイトルに対応する。
vimスクリプトが全く判らないので、Pythonに頼った。
キーマップとか、もっと賢い方法があると思う。
python <<EOF _e_a_width_map = dict(F=2, H=1, W=2, Na=1, A=2, N=1) def _count_width(s): import unicodedata return sum(_e_a_width_map.get(unicodedata.east_asian_width(c), 0) for c in s) def rst_heading(n=0): import vim u = vim.current.line.decode(vim.eval('&encoding')) line_width = _count_width(vim.current.line.decode('cp932')) heading_line = ('#*=-^"'[n]) * line_width lineno = vim.current.window.cursor[0] vim.current.buffer[lineno:lineno] = [heading_line] if n < 2: vim.current.buffer[lineno-1:lineno-1] = [heading_line] EOF " Restructured Text " ######################### " Ctrl-u 1: underline Parts w/ #'s noremap <C-u>1 :py rst_heading(0)<CR> inoremap <C-u>1 <esc>:py rst_heading(0)<CR> " Ctrl-u 2: underline Chapters w/ *'s noremap <C-u>2 :py rst_heading(1)<CR> inoremap <C-u>2 <esc>:py rst_heading(1)<CR> " Ctrl-u 3: underline Section Level 1 w/ ='s noremap <C-u>3 :py rst_heading(2)<CR> inoremap <C-u>3 <esc>:py rst_heading(2)<CR> " Ctrl-u 4: underline Section Level 2 w/ -'s noremap <C-u>4 :py rst_heading(3)<CR> inoremap <C-u>4 <esc>:py rst_heading(3)<CR> " Ctrl-u 5: underline Section Level 3 w/ ^'s noremap <C-u>5 :py rst_heading(4)<CR> inoremap <C-u>5 <esc>:py rst_heading(4)<CR> " Ctrl-u 5: underline Section Level 4 w/ "'s noremap <C-u>6 :py rst_heading(5)<CR> inoremap <C-u>6 <esc>:py rst_heading(5)<CR>
追記
C-u にマップすると上にスクロールするのが邪魔されることに後で気づいた。
良いキーマップを見つけるまで保留。