项目地址: https://github.com/hanxi/lemonade
Windows/Linux/MacOS 桌面环境使用 SSH 远程连接服务器开发。无需鼠标 选择 /拷贝 /粘贴 文本。
比如需要在 Vim 中拷贝一段文本,然后粘贴到桌面软件(QQ?微信?)。 比如需要拷贝的文本超出了一屏幕,用鼠标就不方便了。而且还需要把 Vim 行号临时取消才能用鼠标选择拷贝。
lemonade 分为 client 和 server。 桌面环境(本地)运行 server 端,远程环境运行 client 端。
下面配置环境以 Windows 下 Putty 连接 Linux 服务器开发为例。
lemonade 下载地址 https://github.com/hanxi/lemonade/releases/tag/v2.0.0-pre
下载对应版本的 Windows 包,32 位 /64 位。解压后得到 lemonade.exe 文件
在 cmd.exe 里执行下面命令
lemonade.exe server --allow="127.0.0.1,::1" --port=2489 --line-ending="crlf"
这行命令的意思是用 server 方式启动 lemonade, 只允许本机连接,监听端口为 2489,换行符号为 '\r\n'
设置换行符可以解决 Linux 复制一段文本到 Windows 的 notepad 没有换行的问题。
只允许本地连接会比较安全,然后使用 SSH 把本地的 2489 端口映射到 Linux 的 2489 端口。
可以自己写 start.bat
文件,然后丢到系统启动项里面。后期有空会加个 system tray,对用户会比较友好。
配置 Putty 端口转发:
Connection -> SSH -> Tunnels
Add new forwarded port
Source port 2489
Destination localhost:2489
Remote
Auto
配出的结果这样显示的:R2489 localhost:2489
下载对应版本的 Linux 包,拷贝到 /usr/bin/
或者其他 PATH
路径
新建配置文件 ~/.config/lemonade.toml
填入以下内容
port = 2489
host = '127.0.0.1'
line-ending = 'lf'
trans-loopback = true
trans-localfile = true
步骤 2.1 已经配置好了端口映射,所以这里填的 host 为 127.0.0.1
测试是否配置成功:
echo "test" | lemonade copy
let g:clipboard = {
\'copy': { '+': 'lemonade copy', '*': 'lemonade copy' },
\'paste': { '+': 'lemonade paste', '*': 'lemonade paste' },
\'name': 'lemonade',
\}
这样就可以从 Vim 中用 y
拷贝文本到 Windows 了,也可以用 p
直接粘贴 Windows 上拷贝的文本了。
setw -g mode-keys vi
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send -X copy-pipe-and-cancel "~/.local/bin/lemonade copy"
bind-key ] run-shell "~/.local/bin/lemonade paste | tmux load-buffer -" \; paste-buffer ;
这样就可以从 Tmux 中用 y
拷贝文本到 Windows 了,也可以用 Ctrl + b + ]
直接粘贴 Windows 上拷贝的文本了。
在 Linux 打开 Windows 上的浏览器,并进入到指定的网址。比如在 Linux 上输入下面命令:
lemonade open https://github.com/hanxi/lemonade
这个功能配合 Vim 插件 iamcco/markdown-preview.nvim
非常好用,编辑 Markdown 实时预览。Vim 里这样配置即可:
"{markdown-preview
let g:mkdp_open_to_the_world = 1
let g:mkdp_open_ip = '192.168.29.251'
let g:mkdp_port = 6060
function! g:Open_browser(url)
silent exe '!lemonade open 'a:url
endfunction
当然,如果 Linux 的 ip 是不固定的,也可以用 Putty 的端口映射方法。把 Windows 的 6060 映射到 Linux 的 6060.
L6060 localhost:6060
vim 则需要这样配置
"{markdown-preview
let g:mkdp_open_to_the_world = 1
let g:mkdp_open_ip = 'localhost'
let g:mkdp_port = 6060
function! g:Open_browser(url)
silent exe '!lemonade open 'a:url
endfunction
上传 Linux 上的文件到 Windows,并用浏览器打开。
lemonade open ./test.html
之前推荐过一次 https://github.com/hanxi/blog/issues/17
因为最近我重写了 RPC 协议,采用 HTTP REST API。不安装 lemonade 客户端也能用 curl
或 nc
实现,比如就这么简单的实现了 client 的 copy
和 paste
功能。
#!/bin/sh
if [ $1 == 'copy' ]; then
curl -X POST --data "$2" http://127.0.0.1:2489/copy
fi
if [ $1 == 'paste' ]; then
curl http://127.0.0.1:2489/paste
fi
主要原因还是这工具太好用了,摆脱鼠标的利器。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.