NeovimでLaTeXの編集環境をつくる.
参考にさせていただいたサイト
ryota2357.com
非常に参考になりました.ありがとうございます.
環境:
OS: Windows 11
今回の構成はOSにほぼ(おそらく,環境変数の設定,PowerShellによるスクリプト以外)依存しない.
あとでArchで試す.Macも一台欲しい.
動機
これまでのLaTeX編集環境:
- Notepad++
- 利点: 設定が楽
- 欠点: 機能が少ない
- Vim + lervag/vimtex
- 利点: 設定が楽
- 欠点: 機能が多すぎる
- 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を使うことも検討したが,設定している間に力尽き,断念した.
プラグイン等の一覧
- UI
- LSP
- williamboman/mason.nvim
- williamboman/mason-lspconfig.nvim
- neovim/nvim-lspconfig
- LS
- texlab
- lua-language-server
- Shougo/ddc.vim
- vim-denops/denops.vim
- Deno (非プラグイン)
- UI
- Source
- Filter
- LaTeX
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
bashやPowerShellで通すと良いと思う.
init.lua等を書く
ディレクトリ構成は次のようにした.(↓のツリーはtreeで生成し,一部修正した.lazy-lock.jsonのみ,自動生成.)この構成の理由は一部後述する('plugins'を作った理由).
.config └── nvim │ init.lua │ lazy-lock.json │ └── lua │ ddc.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 = {}に書くものである(ここでハマった).