Neovimでautocmdとcolorschemeの設定をする
情報源
今回の情報源も以下のLua-guideです。
Lua-guide - Neovim docs
autocmdの設定
Vimに記述しているautocmdをNeovimにも設定してみようと調べてみました。
Vimで以下の設定をしているとして、
augroup vimrc autocmd! autocmd FileType vim setlocal keywordprg=:help augroup END
これをNeovimのinit.luaに記述する場合、次のようになります。
vim.api.nvim_create_augroup('vimrc', { clear = true }) vim.api.nvim_create_autocmd({ 'FileType' }, { pattern = 'vim', group = 'vimrc', command = 'setlocal keywordprg=:help', })
1行目で vimrcというaugroupを作成しています。clear = trueはautocmd!の役割を担っています。 2行目以降は見たまんまで、FileTypeがvimの時にcommand行で指定したsetlocal keywordprg=:help を実行します。
Lua-guideに載っていた例を真似して下から2行目の行末に , を記述していますが、別に記述しなくても問題ありません。
Markdownファイルを編集している時に一部の _ (アンダースコア)がハイライトする問題に対処するため、以下のautocmdを記述してみました。
-- Markdownファイルにおいて一部の _ がハイライトするのを防止する local cmhgroup = vim.api.nvim_create_augroup('clear_markdownError_highlight', { clear = true }) vim.api.nvim_create_autocmd({ 'FileType' }, { pattern = 'markdown', group = cmhgroup, command = 'highlight link markdownError NONE' })
1行目でclear_markdownError_highlightというaugroupを作成しています。先の例と同じくclear = trueは autocmd! に相当します。2行目以降では、FileTypeがmarkdownの場合に(Markdownファイルを開くと)、command行にある highlight link markdownError NONE というコマンドが実行されます。
それと、こちらではaugroupの名前が長いので cmhgroupという変数を用意しています。そして、この変数をgroup行で使用しています。
ちなみに、vim.api.nvim_create_augroup関数はグループを識別する数を返すので、変数cmhgroupに格納されるのは文字列ではなく数です。
これを確認するために
print('cmhgroup is '..cmhgroup)
という文を記述しておいたら、次のように表示されました。
cmhgroup is 6
colorschemeの設定
カラースキームを設定してみます。たとえば、「torte」というカラースキームを使う場合、
vim.cmd[[colorscheme torte]]
とinit.luaに記述します。
失敗例を書いておきます。Lua-guideには
vim.cmd("colorscheme habamax")
という例が載っているのですが、この書き方ではカラースキームが有効になりませんでした。ちなみに、使用しているNeovimのバージョンは0.9.0です。
それと自作のカラースキームファイルを使う場合、以下のディレクトリの中にファイルを配置します。
~/.config/nvim/colors
追記
後から気づいたのですが、この記事に書いた
vim.api.nvim_create_augroup() vim.api.nvim_create_autocmd()
を使ったautocmdの記述例は、Vimで以下のようにするのと同じ形ですね。
augroup takoyaki autocmd! augroup END autocmd takoyaki FileType txt set ignorecase autocmd takoyaki FileType cpp set noignorecase
(この形ではautocmd行にグループ名を記述する手間があるので、普段は余り使いませんが・・・)