Neovim の InsertMode でだけ IME を ON にする

こんにちは,M1 の笹倉です.
今回は,Neovim をさらに快適にするために,InsertMode に入るときに IME を ON,出るときに OFF する設定を追加しました.
これで,NormalMode に戻った際に全角のまま移動しようとして画面にJが表示され,半角に切り替える煩わしさから解放されました.

環境

OS: Ubuntu 24.04
IME: fcitx5

実装

今回 chatGPT と相談しながら作成したコードがこちらになります.

if vim.fn.has("unix") == 1 then
    vim.api.nvim_create_autocmd({"InsertEnter"}, {
        pattern = "*",
        callback = function()
            os.execute("fcitx5-remote -c")
        end
    })

    vim.api.nvim_create_autocmd({"InsertLeave"}, {
        pattern = "*",
        callback = function()
            os.execute("fcitx5-remote -o")
        end
    })
end

基本的な動作は次のようになります.

  1. 環境が unix の場合のみ実行
  2. autocmd を2種類作成
  3. InsertMode に入ったとき,fcitx5-remote -c を実行して IME を ON
  4. InsertMode から出たとき,fcitx5-remote -o を実行して IME を OFF

今回自分の環境に合わせて作成したため,他の環境でも動かす場合にはもう少し賢いコードの書き方があると思います.
windows や macOS だと fcitx5-remote ではなく,im-select が使えるようです.

autocmd の実行タイミングで関数を実行できるので色々使えそうです.
これからも快適な作業のために頑張りたいと思います.



Comment

No comment