简介
SshIM 是一个解决ssh中使用vim/nvim 中文输入法自动切换插件。
原理:当ssh中使用的vim 进入insert模式或者离开insert模式,都会触发一个事件。当触发事件以后,通过http的方式通知我们的电脑,我们的电脑会自动切换英文输入法,或者切换中文输入法。
项目地址:
https://github.com/lxyoucan/sshim.vim
插件安装
这里以packer为例,packer插件管理器安装方法:
修改~/.config/nvim/lua/plugins.lua
文件,并增加如下内容:
-- ssh远程vim自动切换本地输入法
use "lxyoucan/sshim.vim"
:wq
退出重新打开nvim后,执行:PackerInstall
安装。
服务器端
这里提供一个思路,不同的操作系统和输入法框架在输入法切换这块是不同的。
精力有限,我这里提供的服务器仅支持macOS系统。其他操作系统理论上也可以。
简明教程
测试环境:macOS Big Sur 版本11.4 Intel版本
解压ssh远程vim切换本地输入法工具macOS版20220105(自带JRE推荐非Java开发人员使用).zip
此文件下载,点这里
首次使用,请自行修改./startDing.sh文件中的imchangerdemo1
,修改成一个不会与大家重复的字符串,如果出现重置就会穿透失败。随便写一个长点的字符串一般没有什么问题。
然后执行
./startALL.sh
根据提示查看一下ding的日志,如下:
#根据自己的路径调整
tail -f /Users/itkey/inputMethodChanger/./ding/catalina.out
日志大概如下:
[16:07:14 CST 2022/01/05] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [client] Authenticated with server, client id: fe081dcb966481f101c57e97e82d5fa3
[16:07:14 CST 2022/01/05] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [client] Tunnel established at
http://imchangerdemo1.vaiwan.com
[16:07:15 CST 2022/01/05] [INFO] (ngrok/log.Info:112) No update available
其中http://imchangerdemo1.vaiwan.com
部分就是内网穿透的地址,可以在外网访问你的本地输入法切换服务器,就是通过这个地址来切换输入法。
配置
"服务器端地址,形如:http://localhost:8088 最后一个字符不要带/
let g:sshim_url = 'http://localhost:8088'
"0启用插件,1禁用插件,默认为0
let g:sshim_disable = 0
当你使用宏的时候,或者出现短时间内频繁 insert 与normal模式切换的时候,可以通过let g:sshim_disable = 1
来禁用输入法切换插件来提醒执行效率。
实现原理
- 从insert模式切换到normal模式插件会自动请求服务器的
/insertLeave
地址 - 从normal模式切换到insert模式插件会自动请求服务器的
/insertEnter
地址
服务器部署在你正在使用的电脑上面,这样你的电脑就能接收到当前的vim状态了,根据这个状态通过一些工具来切换本地的输入法即可。