Q:为什么造轮子? A: 纯粹手痒。
我用过 VimIM,但是切换的时候很卡,也许是电脑不行。做过一些搜索,比如 vim-barbaric 和 vim-xkbswitch 等,要么没有支持 Windows (或者要另外安装 binary ),要么文档太长不想看。所以自己写了一个很简单的,也没有考虑复杂的特性或可能存在的性能隐患,因为还有没用户反馈。先上图。
但是目前还有不少限制:
项目页面: https://github.com/Neur1n/neuims (文档还没补全 :p )
望不吝赐教。
1
Buges 2020-02-18 17:30:14 +08:00 via Android
一直想要一个这样的英文输入法
|
2
emonber 2020-02-18 17:49:04 +08:00 via Android
可以支持 wsl 环境下的 vim 吗?
|
4
emonber 2020-02-18 21:33:59 +08:00
@Neur2n WSL 下用的是 Windows 自带输入法哈,不过 vim 调用的 Python 是 WSL 的( Linux ),无法直接使用 win32 api
|
5
MrUser 2020-02-18 21:34:20 +08:00
没看懂有什么用,没有这个一样可以输入中文呀?
|
6
j137tt736CExzlfM 2020-02-18 21:42:30 +08:00
想在 windows 7 下使用,不知道是否可以
|
10
emonber 2020-02-18 22:08:22 +08:00
@Neur2n 搞定了,参考你的代码,写了一个 C++程序来处理:
```c++ int main(int argc, char** argv) { const int US_HKL = 0x0409; const int ZH_HKL = 0x0804; HWND hwnd = GetForegroundWindow(); if (argc > 1) { if ((strcmp(argv[1], "en") == 0) || (strcmp(argv[1], "eng") == 0) || (strcmp(argv[1], "off") == 0)) { std::cout << "Switch to English IME\n"; return SendMessage(hwnd, WM_INPUTLANGCHANGEREQUEST, 0, US_HKL); } else if ((strcmp(argv[1], "cn") == 0) || (strcmp(argv[1], "chn") == 0) || (strcmp(argv[1], "on") == 0)) { std::cout << "Switch to Chinese IME\n"; return SendMessage(hwnd, WM_INPUTLANGCHANGEREQUEST, 0, ZH_HKL); } } std::cout << "Toggle IME\n"; return SendMessage(hwnd, WM_INPUTLANGCHANGEREQUEST, INPUTLANGCHANGE_FORWARD, 0); } ``` |
11
kevinhwang 2020-02-18 23:21:08 +08:00
如果桌面是 Gnome 的话,毛遂自荐 https://github.com/kevinhwang91/vim-ibus-sw
|
12
Neur2n OP @lazzyboy #6 我在虚拟机试了一下,是可以的,但是:
1. 只用了系统内置的输入法进行测试 2. 如果中文键盘里有两种输入法(比如说拼音和五笔),只能切换到第一个输入法 如果有兴趣使用这个插件,可以帮忙测试下,或去开个 issue 一起讨论下,谢谢。(项目页面: https://github.com/Neur1n/neuims ) |
13
Neur2n OP @emonber #10 我也用 C++实现了,去掉了 Python 依赖。请问你有 GitHub 吗,我在 acknowledgement 里 @一下你。
|
14
Neur2n OP @kevinhwang #11 谢谢,我学习一下
|
15
skywind3000 2020-02-19 20:08:53 +08:00
你这能切换微软拼音的中文 /英文模式么?
|
16
Neur2n OP @skywind3000 不能。这提醒了我好像 vimim 是可以切换的。但是在 normal 模式下也容易按到 shift 把输入法切换成中文模式,除非有什么方法把 shift 给 block 了。
|
17
skywind3000 2020-02-19 21:24:25 +08:00
@Neur2n Windows 本来就可以设置禁用 shift 切中英状态的,我现在默认是微软拼音的英文输入,CTRL+SPACE 中英切换,这样用着舒服点,因为 Win+Space 切换语言我留给了中文 /日语 输入法的切换了,两个维度,效率高些。所以需要变成英文模式。很多人应该和我一样吧,GVim 可以正常切换输中英状态的。
|
18
Neur2n OP @skywind3000 这是一个很好的免插件解决方案。用插件实现有一个目的是避免更改系统设置,可以方便部署到多台电脑,或避免和电脑的其他用户产生习惯冲突。频繁切换输入法而非切换模式,可能对于一些老机器也不友好,所以目前来说可能只能满足小部分人需求。
|
19
emonber 2020-02-20 15:38:38 +08:00 via Android
|