LazyVim のノーマルモードで入力メソッドを無効にする

LazyVim の誤操作を防ぐためにノーマルモードで入力メソッドを無効にします。

環境
・Omarchy v3.0.2
・LazyVim
・fcitx5-im, fcitx5-mozc-ut

下記の要領で入力メソッドを制御します。

・挿入モードを抜けるとき、入力メソッドを無効にする。
・挿入モードでの入力メソッド名を保存する。
・挿入モードを開始したとき、保存した名前を設定する。

~/.config/nvim/lua/custom/fcitx5-remote.lua にファイルを作成します。

local function trim(s)
  return s:match("^%s*(.-)%s*$")
end

local function getMethodName()
  local result = ""
  local handle = io.popen("fcitx5-remote -n") -- Get current input method name
  if handle ~= nil then
    result = trim(handle:read("*a"))
    handle:close()
  end
  return result
end

vim.g.fcitx_input_method_name = getMethodName()

local function onInsertLeave()
  vim.g.fcitx_input_method_name = getMethodName()
  os.execute("fcitx5-remote -c") -- inactivate input method
end

vim.api.nvim_create_autocmd("InsertLeave", {
  callback = onInsertLeave,
})

local function Restore(fcitx_input_method_name)
  if fcitx_input_method_name ~= "keyboard-us" then
    os.execute("fcitx5-remote -o") -- activate input method
  end
end

vim.api.nvim_create_autocmd("InsertEnter", {
  callback = function()
    Restore(vim.g.fcitx_input_method_name)
  end,
})

~/.config/nvim/init.lua で作成したファイルを require します。


-- bootstrap lazy.nvim, LazyVim and your plugins
require("config.lazy")

require("custom.fcitx5-remote")

以上です。



▼この記事がいいね!と思ったらブックマークお願いします
このエントリーをはてなブックマークに追加