ssh中远程vim自动切本地输入法

2023-05-16

简介

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状态了,根据这个状态通过一些工具来切换本地的输入法即可。

灵感

https://github.com/ybian/smartim

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ssh中远程vim自动切本地输入法 的相关文章

  • RVM 无法通过 SSH 工作(作为一项功能)

    我刚刚在 Debian 6 服务器上安装了 RVM 一开始没有任何问题 但是 在一切设置完成后 我无法在终端中运行 RVM 我打字时收到的消息rvm use is RVM is not a function selecting rubies
  • 无法在 Windows 7 中为 heroku 生成 ssh 公钥

    当我努力的时候heroku login通过我机器上的cmd 它说 找不到现有的公钥您想生成一个吗 YN 之后 当我按 y 并输入时 它会说 生成新的 ssh 公钥无法生成密钥 ssh keygen 未被识别为内部或外部命令可操作程序或批处理
  • 为什么在 Vim 的插入模式下粘贴长一行非常慢?

    昨天 当我尝试将 1200 行 每行 80 个字符 粘贴到 Vim 时 我的 Macbook 被卡住了 下载文件而不是粘贴文本要快得多 我认为这个问题可能是互联网运营商允许上传速度比下载速度慢的原因 如果您将其粘贴到终端窗口中 Vim 会认
  • 在 Google Compute Engine 上访问 FTP

    我正在 debian 7 wheezy 上运行一个实例 而且我对 Google 计算引擎有点陌生 我浏览了该网站上的支持请求以及 Google 网站上的常见问题解答帖子 然而我没有发现任何我可以完全遵循的东西 我对 Linux 有一点了解
  • VIM 分块插入

    我想在 VIM 中选定的文本块的开头插入一个哈希 Ruby 注释 我在可视模式下选择了线条 但如何对所有线条执行相同的操作 您有两个主要选择 在块视觉模式中选择 ctrl v 然后使用I沿着整个块的左侧插入相同的东西 相似地A追加 看分块运
  • 如何在 Vim 中仅在某些上下文中启用语法隐藏?

    我想隐藏名称基于希腊符号的变量 并将它们转换为 Unicode 等效符号 类似于vim 可爱的 python https github com ehamberg vim cute python作品 例如 我有这个 syntax match
  • 如何使用python远程执行进程

    我想使用 Python 连接到远程服务器并在远程服务器上执行进程 我希望能够获取进程的返回代码和标准错误 如果有 以前有没有人做过类似的事情 我已经用 ssh 完成了 但我想从 Python 脚本中完成 Cheers Use the 名为
  • VIM语法折叠:禁用折叠多行注释

    我在 vim 7 3 中使用 语法 折叠方法 在 vimrc中 set foldmethod syntax 当我打开 Test cpp 时 包含 A function with a multi line comment This takes
  • 在 Vim 的 `autocmd` 命令中调用函数

    我想使用expand函数在一个autocmd 特别是 我正在改编tip https stackoverflow com questions 1240037 recommended build system for latex 1394702
  • Windows 上 gnu make 的 libintl3 和 libiconv2 在哪里,需要在 MinGW 上用 ruby​​ 编译 vim

    我正在尝试为 Windows 运行 gnu make 但它无法运行 因为libint3 dll没找到 果然 http gnuwin32 sourceforge net packages make htm http gnuwin32 sour
  • 通过列表字符仅显示前导空格的“空格”字符

    Vim 中是否可以有我的编辑器 编辑时 c and h文件 显示通过listchars 一个特殊字符 仅用于leading空格字符 我发现一个单独的帖子指出 从版本 7 4 开始 Vim 现在支持通过以下方式突出显示所有空格字符listch
  • 按文件类型设置 Vim 空白首选项

    在我的工作中 我需要遵循房屋风格进行缩进 如下所示 编码 html 和 ruby 时有 2 个空格 编码 javascript 时使用制表符 建议使用 tabwidth 4 为每个文件类型指定不同的空白首选项的最佳方法是什么 方法有很多 但
  • Vim 插入模式下光标线颜色变化

    有一个很好的片段可以改变光标颜色 if term xterm rxvt use an orange cursor in insert mode let t SI
  • 如何在 NERDTree 中显示隐藏文件(以句点开头)?

    我怎样才能使NERDTree https github com scrooloose nerdtree显示以 a 开头的文件 时期 我有一个名为 hgignore在项目目录中 如果我使用 NERDTree 浏览到该目录 该文件不会显示在树中
  • 为什么 cygwin 无法读取我的主目录中的 .ssh/config 文件?

    我正在使用 cygwin 并且正在尝试设置 ssh config 文件 Cygwin 的文件夹位于我的 C 驱动器中 我的主目录是 C Users USER 我注意到 当我编辑 C Users USER ssh config 时 cygwi
  • 如何使用 vim 作为“git show”编辑器?

    全部如所述如何使用 vim 作为 git log 编辑器 https stackoverflow com questions 16666009 how do i use vim as git log editor不适用于 git show
  • 如何将可视选择的文本通过管道传输到 UNIX 命令并将输出附加到 Vim 中的当前缓冲区

    使用 Vim 我尝试将在可视模式下选择的文本通过管道传输到 UNIX 命令 并将输出附加到当前文件的末尾 例如 假设我们有一个 SQL 命令 例如 SELECT FROM mytable 我想做如下的事情
  • Vim 在 Mingw 上表现异常

    我在 MinGW 4 6 2 上的 Vim 表现得很奇怪 例如 在插入模式下按 Backspace 会删除字符 但我必须用箭头键移动光标才能删除的字符消失 而且它也会使我退出插入模式 另一个例子 按 Del 删除字符有时会生成奇怪的字符 例
  • SSH,运行进程然后忽略输出

    我有一个命令可以使用 SSH 并在 SSH 后运行脚本 该脚本运行一个二进制文件 脚本完成后 我可以输入任意键 本地终端将恢复到正常状态 但是 由于该进程仍在我通过 SSH 连接的计算机中运行 因此任何时候它都会登录到stdout我在本地终
  • vim 按语法高亮类型搜索

    我正在将 i18n 添加到现有项目 Web 应用程序 这涉及到用对 i18n 库的调用来替换静态文本的每一位 如果能够搜索该文本 而不是依靠语法突出显示来直观地识别它 将会很方便 在 vim 中 是否可以在文件中搜索特定突出显示类型的出现

随机推荐

  • ERROR Error: Reanimated 2 failed to create a worklet

    报错 To reload the app press span class token string 34 r 34 span To span class token function open span developer menu pr
  • React Native创建一个新的项目常用命令

    创建项目 创建一个typescript项目 npx react native init ywh template react native template typescript 导入库 整合 方便一键安装 以下仅是本人常用的组件 xff0
  • 各操作系统支持图标字体的终端推荐

    软件推荐 操作系统推荐macOSiTerm2windowsWindows TerminallinuxGNOME 终端 等androidTermux或TermiusiOSTermius 不完美 如果你在macOS我推荐你使用iterm2 xf
  • MAME set 4 player

    背景 我本身有一个手柄 xff0c 准备12 12在入手一个 然后小杨同学就把他的一对手柄借给我啦 xff0c 让我试试手感 xff0c 好决定买哪个 那么我现在就有3个手柄可以使用 我就想找个3个人以上的游戏来玩玩 首先我就想到了玩街机
  • [视频教程]macOS运行MAME

    操作视频 https www bilibili com video BV1Nr4y1D7SQ 安装 brew span class token function install span mame ROM 把roms文件夹放到以下目录 xf
  • [视频教程]MAME画质优化hq3x

    关于滤镜 xff0c 萝卜白菜各有所爱 我个人喜欢hq3x的画质 视频教程 https www bilibili com video BV1Ji4y1d7j6 默认画质 hq3x 加了层滤镜 xff0c 显示更平滑了 配置方法 核心配置 搜
  • macOS安装最新MAME 报错dyld: Library not loaded:

    在macOS中安装最新版本的MAME 报错 mame dyld Library not loaded 64 rpath SDL2 framework Versions A SDL2 Referenced from Users itkey m
  • ‘@typescript-eslint/no-shadow‘ was not found

    我新建了一个React Native项目 xff0c 然后IDE报错如下 以前新建的项目是不会有任何报错信息的 报错信息 Definition for rule 64 typescript eslint no shadow was not
  • 纯javascript代码修改react 的输入框的值

    背景 我们有一个老的项目在维护 xff0c 项目是使用react dom 64 16 8 6实现的 也就是react开发的 xff0c 但是因为某种原因 xff0c 暂时找不到源码了 时间紧任务重 xff0c 必须赶紧解决问题 简化需求 x
  • 【视频教程】MAME0.238配置分享

    视频链接 https www bilibili com video BV15q4y1B7Hn 附件下载 百度网盘分享 链接 https pan baidu com s 1rsBdRn99 KWjhRpPrGBmfw 提取码 4ge5CSDN
  • Netty解决粘包拆包问题,Netty使用自定义编解码器解决粘包拆包问题

    文章目录 一 什么是粘包拆包二 粘包拆包实例1 Server端2 Client端3 测试一下 三 解决粘包拆包的方案四 使用自定义编解码器解决粘包拆包问题1 定义协议包2 编解码器3 server端4 client端5 测试一下 一 什么是
  • vim表格格式化插件vim-table-mode

    简介 一个很棒的自动表格创建器和格式化程序 xff0c 允许您在键入时创建整洁的表格 项目主页 https github com dhruvasagar vim table mode 安装 这里以packer为例 packer插件管理器安装
  • React Native打包安卓应用笔记

    前言 大部分内容是复制过来的 xff0c 主要做了一下整理 xff0c 方便自己查阅 打包发布 Android 要求所有应用都有一个数字签名才会被允许安装在用户手机上 xff0c 所以在把应用发布到应用市场之前 xff0c 你需要先生成一个
  • 无需AS通过命令行启动安卓模拟器

    背景 我是做RN开发的 xff0c 要经常启动安卓模拟器来测试 时间久了 xff0c Android Studio 成安卓模拟器启动器了 每次打开AS还是挺久的 xff0c 所以就想直接通过命令行来启动安卓模拟器 xff0c 这样会快很多
  • ssh登录时自动运行命令

    方法一 编辑 nvim ssh rc 里面写上要执行的命令 比如 xff1a span class token builtin class name echo span span class token string 39 command
  • React Native倒计时

    代码 span class token keyword import span span class token operator span span class token keyword as span React span class
  • React Native android 8以上版本闪退踩坑笔记

    背景 我的android的测试机版本是android 8 xff0c 我使用React Native开发的应用 xff0c 自己测试是正常的 iOS上也是正常的 但是一放到android8以上的版本本就出现了闪退的现象 xff0c 让我非常
  • git push send-pack: unexpected disconnect while reading sideband packet

    错误信息 span class token function git span push 枚举对象中 span class token number 200 span 完成 对象计数中 span class token number 100
  • node.js启动静态页面服务

    安装http server span class token function npm span span class token function install span http server g 启动服务 span class to
  • ssh中远程vim自动切本地输入法

    简介 SshIM 是一个解决ssh中使用vim nvim 中文输入法自动切换插件 原理 xff1a 当ssh中使用的vim 进入insert模式或者离开insert模式 xff0c 都会触发一个事件 当触发事件以后 xff0c 通过http