NeoVim + vimtexでSyncTeXを使う

SyncTeXを使うのは色々設定項目があってOS毎に違っており面倒臭い。 この記事は

qiita.com

と被るところも多い。 以降に書くことも大抵のことはvimtexのドキュメントを見れば書いてあるが、メモも兼ねて書いておく。 vimtexのインストール、最低限の設定がしてあることを前提とする。 基本的にNeoVimが対象だが、Vimでもそのまま使えるところはその都度明記しておく。

まずneovim-remoteをインストールする。

$ pip3 install neovim-remote

vimrcには次を追記する。 これでMacでもLinuxでも、VimでもNeoVimでも対応できる。 PDFビューアとしてはMacではSkim、LinuxではZathuraを用いている。

if has('mac')
  let g:vimtex_view_method='skim'
else
  let g:vimtex_view_method='zathura'
endif
if has('nvim')
  let g:vimtex_compiler_progname
        \ = 'nvr'
endif

TeXファイルを開くときは

$ NVIM_LISTEN_ADDRESS=/tmp/nvimsocket nvim file.tex

で開く。 /tmp/nvimsocket のところは任意の文字列で良さそう。 aliasを作っておくと便利。

TeX → PDF

上だけでVimでもNeoVimでもOK。 vim上で <localleader>lv を実行すればPDFの該当箇所が開く。

PDF → TeX

Linuxの場合

同じく上だけでVimでもNeoVimでもOK。 PDF上でCtrl+クリックをすれば、(Neo)Vimのカーソルが該当箇所に移動する。 残念ながらウィンドウのフォーカスまでは移動しないようだ。

Macの場合

こちらはNeoVim (CLI)を前提とする。 Skimの設定が必要になる。

環境設定の「同期する」タブを選ぶ。 「PDF-TeX同期サポート」で初期値を「カスタム」にして、 コマンドを nvr、引数を --remote-silent "%file" -c %line にする。 Skimを再起動したり、OSを再起動しないと設定が有効にならないかもしれない。 反映されるタイミングが謎。

これでPDFをCmd+Shift+クリックすれば、該当箇所にNeoVimのカーソルが移動する。