本文来自依云's Blog,转载请注明。
在使用 Mac OS X 时,我十分想念 fcitx.vim 插件在使用 Vim 时能智能切换输入法的激活状态。所以我换回 Arch Linux 了。关于 Mac OS X 与我的「不兼容」还是留到下次再说,这次解决的问题是,当我 ssh 到另一主机上使用 Vim 时,如何让 fcitx.vim 能够控制本机的输入法状态?
fcitx-remote 接口使用的是 UNIX 套接字文件,因此天生是不能跨主机通信的(因此不用担心局域网里其它人捣乱)。现在,为了进行跨主机通信,当然要使用网络套接字了。既然都是套接字,转发下就可以了嘛。于是想到 socat。
在远程机器监听一个套接字文件,转发到本地机器的 8989 端口:
socat UNIX-LISTEN:/tmp/fcitx-remote.sock,fork TCP:192.168.2.142:8989
在本地监听网络 8989 端口,转发到本地 fcitx 的套接字:
socat tcp-listen:8989,fork UNIX-CONNECT:/tmp/fcitx-socket-\\:0
fcitx.vim 使用更新后的 1.2 版,然后告诉它你要使用的套接字文件地址:
export FCITX_SOCKET=/tmp/fcitx-remote.sock
然后就可以啦~
最后,贴一张测试过程中抓到的 htop 的图片,2 万多进程哦,htop 已经卡了,实际的 load 请看右下角的红色数字。我执行killall socat
命令后等了几分钟,终于因为内存耗尽系统开始重新缓慢工作了。数次 killall 后终于恢复正常……再次测试前果断先ulimit -u 1000
:-)
Jul 28, 2012 06:02:42 PM
都么样子了还没死机,让我的破机子情何以堪。。。。
Jul 28, 2012 08:28:26 PM
你也可以试试的嘛,开个 socat 把 socket A 转发到 socket B,然后再开个 socat 反过来转发。准备好 htop 和相机,拿 nc 之类的连上去就可以啦~
Aug 14, 2012 10:02:27 PM
前段时间发现这个socat的
Sep 03, 2012 12:33:26 PM
仙子也腹黑?
Nov 03, 2012 09:47:37 AM
在公司被逼用这个东西了。
我来报个bug
你在plugin/fcitx.vim的判断里面,不应该判断 $DISPLAY 的,至少在ssh到终端的时候不应该判断这个变量,否则在ssh的终端,这个插件不生效。
Nov 03, 2012 10:12:17 AM
在 ssh 里的时候 fcitx.vim 不会载入的啊。
Nov 05, 2012 12:21:00 AM
你这插件不就是为了让ssh到服务器并且使用vim的时候来支持fcitx的自动切换的么?
Nov 05, 2012 09:30:29 AM
嗯,是有点问题……