Neovimにeskk.vimをインストールする
はじめに
Neovimを使い始めて少し経ち、日本語入力用にeskk.vimを導入したので、備忘録も兼ねて手順を書きます。
参考
友達のkat0hがVimにeskk.vimを導入する記事を書いていたので参考にしました。
というかほぼ彼の記事のNeovim版です。
インストール
eskk.vim
好みのプラグインマネージャーでインストールします。
自分はvim-jetpackをpackerっぽくluaで書く方法を使っています。
use {
'vim-skk/eskk.vim',
config = function()
vim.g['eskk#directory'] = '~/.eskk'
vim.g['eskk#dictionary'] = { path = '~/.eskk_jisyo', sorted = 1, encoding = 'utf-8' }
vim.g['eskk#large_dictionary'] = { path = '~/.config/nvim/SKK-JISYO.L.txt', sorted = 1, encoding = 'euc-jp' }
end,
}
辞書
skkで変換機能を使うには、読みと漢字を対応させた辞書が必要です。
辞書は↓からダウンロードできます。
kat0hはダウンロードするスクリプトを書いていましたが、自分はNeovimの設定を入れたdotfilesの中に含めてしまっています。
こうすることで、新しい環境でdotfilesをcloneすれば、その時点からskkが使えます。
dotfilesに含めるにあたって、拡張子に.txt
を追加しています。(GitHubのLanguagesを正確に表示するため)
skkの使い方
skkは普通のIMEのように予測変換のような機能はありません。
あくまで入力したものをそのまま変換するというシンプルな動作をします。
ですが、OSのIMEを変えることなく、エディタ上で日本語入力ができるので、vimで日本語を打ちたい時にとても便利です。
僕はパソコンやスマホなど色んな環境で開発を行うので重宝しています。
詳しい使い方はkat0hの説明がわかりやすいのでそっちを見てください。
lualine.nvimに変換モードを表示
Neovimのステータスラインを装飾するプラグインは、lualine.nvimがデファクトスタンダードといって差し支えないでしょう。
自分もlualineを使っています。
さて、ステータスラインにeskkのモードを表示する方法ですが、これは今回少し工夫したポイントです。
まずは設定の全体を出します。
use {
'nvim-lualine/lualine.nvim',
config = function()
local function skkmode()
if vim.call('eskk#is_enabled') == 1 then
return vim.g['eskk#statusline_mode_strings'][vim.call('eskk#get_mode')]
else
return ''
end
end
vim.api.nvim_create_autocmd('user', {
pattern = 'eskk-initialize-post',
callback = function()
require('lualine').setup({
sections = {
lualine_c = { 'filename', skkmode },
},
})
end,
})
require('lualine').setup()
end,
}
順を追って解説します。
local function skkmode()
if vim.call('eskk#is_enabled') == 1 then
return vim.g['eskk#statusline_mode_strings'][vim.call('eskk#get_mode')]
else
return ''
end
end
ここでは、eskk.vimのモードを文字列で返す関数を定義しています。
kat0hの記事ではInsertモードの時のみeskkのモードを返すような関数にしていましたが、eskkはコマンドモードでも使えるので、その部分は省きました。(これでもちゃんと動作します)
vim.api.nvim_create_autocmd('user', {
pattern = 'eskk-initialize-post',
callback = function()
require('lualine').setup({
sections = {
lualine_c = { 'filename', skkmode },
},
})
end,
})
ここが今回最大のポイントです。
require('lualine').setup()
の中で普通にskkmode
関数を指定するだけだと、プラグインの読み込みの分ステータスラインの表示が遅れてしまいます。
そこで、autocmdを使って、eskkのプラグインが完全に読み込まれた後にlualineに項目を追加するようにしています。
おわり
Discussion