Skip to content

A VIM input method switching plugin implemented based on SSH forwarding and Socket communication. 一个基于 SSH 转发和 Socket 通信实现的 VIM 输入法切换插件

License

Notifications You must be signed in to change notification settings

mkdir700/im-select-remote.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IM-Select-Remote

GitHub Workflow Status Lua

基于 SSH 转发和 Socket 通信的 VIM 输入法切换插件。

介绍

切换输入法您需要安装第三方工具,我这里推荐使用 im-select,当我执行如下命令即可切换至 ABC 输入法:

im-select com.apple.keylayout.ABC

所以,逻辑非常简单,就是让远程服务器调用本机用于切换输入法的命令即可。

安装

  • packer
use { 'mkdir700/im-select-remote' }
  • lazyvim
{
  "mkdir700/im-select-remote",
  config = function()
    require('im-select-remote').setup()
  end
}

配置

插件配置

默认配置如下:

M.config = {
  osc = {
    secret = "",
  },
  socket = {
    port = 23333,
    max_retry_count = 3,
    command = "im-select com.apple.keylayout.ABC",
  },
}

SSH + Socket (推荐)

配置 SSH

配置文件路径:~/.ssh/config

  • 本机
Host <your server name>
  HostName <your hostname>
  User <username>
  Port 22
  RemoteForward 127.0.0.1:23333 127.0.0.1:23333  -- 用于端口转发
  ServerAliveInterval 240
Host *
  ForwardAgent yes

注意:RemoteForward 用于端口转发,ServerAliveInterval 用于保持连接。 RemoteForward 的第一个参数是远程服务器的地址,第二个参数是本地机器的地址。

  • 远程服务器
Host local
  HostName localhost
  Port 23333
  User <username>

启动 Socket 服务

IM-Select-Remote 可以连接 Socket 服务以通知本地机器切换输入法,所以本地机器需要开启一个 Socket 服务。

git clone https://github.com/mkdir700/im-select-remote.git
chmod +x ./im-select-remote/server/im_server.sh
./im-select-remote/server/im-server.sh
自启动

Mac OS:

launchctl load ./launch/localhost.im-server.plist
launchctl start localhost.im-select.plist
launchctl status localhost.im-select.plist

Linux:

TODO

Windows:

TODO

注意:

打开 NVIM 后,IM-Select-Remote 会去判断是否已配置 SSH,这将作为是否自动连接的前提条件。如果检查通过将连接 Socket 服务,否则最多重试三次后就放弃连接。

此外,您也可以执行 IMSelectSocketEnable 进行手动连接。

OSC (等待测试)

TODO

使用

自动切换输入法的触发时机:

  • 进入缓冲区时
  • 从输入模式回到正常模式时

感谢

About

A VIM input method switching plugin implemented based on SSH forwarding and Socket communication. 一个基于 SSH 转发和 Socket 通信实现的 VIM 输入法切换插件

Topics

Resources

License

Stars

Watchers

Forks