NeovimによるLaTeX編集環境の設定

NeovimでLaTeXの編集環境をつくる.

参考にさせていただいたサイト
ryota2357.com
非常に参考になりました.ありがとうございます.

環境:
OS: Windows 11
今回の構成はOSにほぼ(おそらく,環境変数の設定,PowerShellによるスクリプト以外)依存しない.
あとでArchで試す.Macも一台欲しい.

動機

これまでのLaTeX編集環境:

  1. Notepad++
    • 利点: 設定が楽
    • 欠点: 機能が少ない
  2. Vim + lervag/vimtex
    • 利点: 設定が楽
    • 欠点: 機能が多すぎる
  3. VSCode + vscodevim + LaTeX Workshop
    • 上に同じ

今回は環境設定が煩雑になることをある程度許容して,編集時により使いやすい環境を構築することを目指す.また,これまで(LSPについては,明示的に設定して)使っていなかったNeovimとLSPを使ってみる.

使うもの

エディタはNeovimを使う.
これは,ほかのエディタをVimの操作を再現するプラグインを入れて使う際にVimの挙動が完全に再現されないことによる.特にキーバインドの設定や検索が他のエディタで思うように使えなかった.
また,今回はinit.luaなどを使い,なるべくLuaで設定する.また,vim.cmdなどは極力使わず,Vim scriptで書く必要がある場所のみで使う.

プラグインマネージャにはlazy.nvimを使う.
Vimではvim-plugを使っていたが,lazy.nvimはLuaで書かれているため,こちらを使う.
なお,dpp.vimを使うことも検討したが,設定している間に力尽き,断念した.


プラグイン等の一覧

tani/ddc-fuzzyも便利そうだけど,設定する時間がないため今回は導入しない.

手順

XDG Base Directory Specificationに従い,環境変数を設定する

NeovimはXDG Base Directory Specificationに対応している.これに従ってパスを通すと,構成の環境依存度が減る.

XDG_CACHE_HOME: ~/.cache
XDG_CONFIG_HOME: ~/.config
XDG_DATA_HOME: ~/.local/share
XDG_STATE_HOME: ~/.local/state

bashPowerShellで通すと良いと思う.

init.lua等を書く

ディレクトリ構成は次のようにした.(↓のツリーはtreeで生成し,一部修正した.lazy-lock.jsonのみ,自動生成.)この構成の理由は一部後述する('plugins'を作った理由).

.config
└── nvim
    │   init.lua
    │   lazy-lock.json
    │
    └── luaddc.lua
        │   keymap.lua
        │   lazy_nvim.lua
        │   option.lua
        │
        └── plugins
                ddc-plugins.lua
                lsp.lua
                lualine.lua
                nvim-texlabconfig.lua
init.lua
require('option')
require('keymap')
require('lazy_nvim')
require('ddc')

option: vim.optなど.
keymap:名前そのまま.
lazy_nvim: lazy.nvimのインストールと各プラグインの読み込み.
ddc: ddc.vimの設定

lazy_nvim.lua
--~~
--readmeの通り
--~~
require('lazy').setup('plugins')

最後の一行がミソ.こうすると,'lua/plugins'下の.luaを読んでくれる.ただし,これは通常requireで読まれるようなものではなく,lazy.nvimのspec = {}に書くものである(ここでハマった).

ddc.vimの設定
  • - -

ここまで書いて力尽きた.うまく動かなかった.

  • .texでLSPの候補が出ない.
  • .texで候補が一切出ない(多分).
  • .luaでLSPの候補が出ない(多分).
  • texlabの設定の方法がわからない.
    • vim.lsp.buf_request でやればいいのかな
  • - -
ビューアー・SyncTeX