im01可用于各种需要自动切换输入法开启/关闭状态的编辑器,如vim。支持微软中文输入法和微软日语输入法。
获取前台窗口的输入法状态代码
.\im01.exe -g设置前台窗口的输入法
.\im01.exe -s <status>[-<conversion_mode>]关闭输入法
.\im01.exe -s 0
开启中文输入法
.\im01.exe -s 1-1025
开启日语输入法
.\im01.exe -s 1-9
在setting.json中添加配置:
{
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "0",
"vim.autoSwitchInputMethod.obtainIMCmd": "C:\\Progra~1\\im01\\im01.exe -g",
"vim.autoSwitchInputMethod.switchIMCmd": "C:\\Progra~1\\im01\\im01.exe -s {im}",
}Vim在.vimrc中添加配置:
augroup AutoIME
let ime01_path = 'C:\\Program Files\\im01\\im01.exe'
let ime_mode = '0'
autocmd!
autocmd InsertLeave * let ime_mode = system('"' . ime01_path . '" -gs 0')
autocmd InsertEnter * call system('"' . ime01_path . '" -s ' . ime_mode)
augroup ENDNeovim可在init.lua中添加配置:
local augroup_name = "AutoIME"
local default_ime_mode = "0"
local ime_mode = "0"
local im01_path = "C:\\Program Files\\im01\\im01.exe"
local ime_set = function(mode)
io.popen(string.format('"%s" -s %s', im01_path, mode)):close()
end
local ime_get_set = function(mode)
local handle = io.popen(string.format('"%s" -gs %s', im01_path, mode), "r")
local saved_mode = handle:read("*all")
handle:close()
return saved_mode
end
vim.api.nvim_create_augroup(augroup_name, {})
vim.api.nvim_create_autocmd("InsertLeave", {
group = augroup_name,
callback = function()
ime_mode = ime_get_set(default_ime_mode)
end
})
vim.api.nvim_create_autocmd("InsertEnter", {
group = augroup_name,
callback = function()
ime_set(ime_mode)
end
})