dev-hsimyu

おれが作ったものとかについて紹介したりするブログ

日本語のTeX文書を書くためのvimrc

色々書き加えてみました.
neocomplete(neocomplcache), neosnippetなど代表的なプラグインは入れてあるとして,
本記事は数式含みの日本語TeX文章を書く時用の設定をまとめることにします.

便利だったプラグインは'im_control.vim'と'vimtex'
参考にしたのはこの辺.

vimrc全体は https://github.com/hoshimi/dotfiles/blob/master/.vimrc

.vimrcのTeX関連部分 (lightlineあたりはがっつり削って載せています)

" im_control status display on lightline
let g:lightline = {
    \ 'colorscheme': 'wombat',
    \ 'active': {
    \   'left': [ ['imcontrol'] },
    \ 'component': {
    \   'imcontrol': '%{has("gui_running")?IMStatus("ime fixed"):""}',
    \ },
    \ 'separator': { 'left' : '', 'right' : '' },
    \ 'subseparator': { 'left' : '|', 'right' : '|' }
\ }

" im_control
if has('gui_running')
  let IM_CtrlMode = 4
  inoremap <silent> <C-e> <C-^><C-r>=IMState('FixMode')<CR>
else
  set t_Co=256
  let IM_CtrlMode = 0
endif

"" mappings

" move on display lines
noremap j gj
noremap k gk
noremap gj j
noremap gk k

" braces hokan
inoremap {<CR> {}<Left><CR><ESC><S-o>
inoremap [<CR> []<Left><CR><ESC><S-o>
inoremap (<CR> ()<Left><CR><ESC><S-o>

" undo splitting
inoremap <CR> <C-g>u<CR>

" mappings in insert mode
inoremap <C-k> <Up>
inoremap <C-j> <Down>
inoremap <C-h> <Left>
inoremap <C-l> <Right>
inoremap <silent> <C-x> <BS>
inoremap <silent> <C-d> <Del>
inoremap <C-z> <ESC><Undo>

" vimtex
let g:vimtex_latexmk_enabled = 1
let g:vimtex_latexmk_options = '-pdfdvi'
let g:vimtex_latexmk_continuous = 1
let g:vimtex_latexmk_background = 1
let g:vimtex_view_method = 'general'
let g:vimtex_latexmk_callback = 0

if has('win32')
    let g:vimtex_view_general_viewer = 'SumatraPDF.exe'
    let g:vimtex_view_general_options = '-forward-search @tex @line @pdf'
    let g:vimtex_view_general_options_latexmk = '-reuse-instance'
elseif has('unix')
    let g:vimtex_view_general_viewer = 'open'
endif

let g:vimtex_fold_enabled = 1
let g:vimtex_fold_automatic = 1
let g:vimtex_fold_envs = 1
let g:vimtex_toc_split_pos = "topleft"
let g:vimtex_toc_width = 10

" vimtex hokan for neocomplete
if !exists('g:neocomplete#sources#omni#input_patterns')
  let g:neocomplete#sources#omni#input_patterns = {}
endif
let g:neocomplete#sources#omni#input_patterns.tex = "\\cite{\s*[0-9A-Za-z_:]*\|\\ref{\s*[0-9A-Za-z_:]*"

augroup myLaTeXQuickrun
    au!
    if has('gui_running')
        au BufEnter *.tex inoremap <silent> $  <C-g>u$$<ESC>:call IMState("Leave")<CR>i
    endif
augroup END

function! s:TeXDollarFunc()
    " ime fixed?
    let s:cmd = "<Left>"
    if g:IMState == 2
        s:cmd += "<C-^>"
    endif

    return s:cmd

endfunction

個人的には$入力の補完と自動IME切り替え,insert modeでの簡易カーソル移動あたりがかなり良い感じです.
こういうの書くのってQiitaとかのがいいのかしらん…….