Vim 上远程开发有什么方案?

2023-10-13 17:09:04 +08:00
 Kumo31

平常都是直接 ssh 到开发机上 nvim 写代码。前段时间机房搬迁后,到开发机的延迟高了不少,编辑时虽然算不上卡,但明显能感觉到操作延迟。一开始使用 (N)vim 就是为了「爽」,现在体验却大大降低了。v 友们是怎么用 vim 远程开发的

比较理想的是像 VSCode Remote 那样的体验,操作、渲染在本地实现,只在后台异步同步,同时 LSP 也是使用服务端的

简单尝试过 sshfs ,虽然操作(移动光标)是流畅了,但问题更多。不说 LSP/Terminal ,单文件系统的速度就慢的不行,完全没法用

也看过社区中的相关讨论: https://github.com/neovim/neovim/issues/21635 , 没得到什么结论

为什么不直接在本地开发?

为什么直接使用 VSCode + Vim 插件?

3765 次点击
所在节点    Vim
18 条回复
leisurelylicht
2023-10-13 17:19:25 +08:00
同求,一直在找 neovim 比较满意的远程开发方案
sam0ple
2023-10-13 17:26:38 +08:00
smb 挂载远程目录,在本地开发?
darksword21
2023-10-13 17:36:56 +08:00
用 emacs + evil + tramp
hellodudu86
2023-10-13 18:03:49 +08:00
以前我也纯 vim 用户,切换到 vscode+vim 插件好几年了,以前不想这种混搭模式也是因为不够 vim ,现在回头看当时真的只是在“为难”自己
daydreamcafe
2023-10-13 18:34:04 +08:00
在 vscode 上装 nvim 插件,这样就有了 vim 的生态,也有 vscode remote 开发的畅快体验了
ho121
2023-10-13 18:39:28 +08:00
ssh 打开压缩试试?
L4Linux
2023-10-13 19:07:04 +08:00
@darksword21 tramp 体验挺烂的
chikai
2023-10-13 19:13:44 +08:00
还是 VSCode + Vim 吧,习惯就好了
xgdgsc
2023-10-13 19:35:30 +08:00
ssh -X 或者 nomachine 远程控制 或者在 vscode remote 的终端里用 vim?
iridescent0rsy
2023-10-13 22:05:38 +08:00
@sam0ple 还有 sshfs 也行,服务器也不用另外配置文件服务
iridescent0rsy
2023-10-13 22:06:32 +08:00
@iridescent0rsy 啊,没看全原文,楼主已经用过了 😂
yzwduck
2023-10-13 22:16:59 +08:00
试试用 UDP 的 mosh (mobile shell) 会不会降低一点网络延迟?
keyv
2023-10-13 22:51:38 +08:00
目前没有比较成熟的方案,如果感兴趣可以看一下 https://github.com/chipsenkbeil/distant.nvim
darksword21
2023-10-14 01:31:53 +08:00
@L4Linux 没感觉,我用了一年多了
xxgj
2023-10-14 22:36:15 +08:00
我恰好也遇到過類似的問題,最終的折衷方案是使用 Git ,不一定適用於 OP...

更具體來說,LSP 依然使用 Mac 的,有需要編譯或測試時,把目前的代碼變更 push 到遠程的個人分支,再從開發機上 pull 下來進行編譯等操作。這一套流程可以在本地直接調用 ssh 的命令完成,最後再配置一個編譯完成後的 slack 提醒,基本上就是我日常的 workflow 了:)
acerphoenix
2023-10-15 09:45:08 +08:00
用 vscode 也会延迟吧,毕竟你网络差。我觉得还得本地开发,起个类似 syncthing 服务一直异步同步,当然调试什么的就没戏了。
Kumo31
2023-10-16 14:04:48 +08:00
@yzwduck #12 体验了下,mosh 很不错,感谢
Meursau1T
2023-11-23 15:09:47 +08:00
我自己折腾了套方案:
先尝试直接用 rsync 同步,他的增量同步有点问题,容易导致远程起的服务刷新太多文件。
后面干脆写了个脚本,调用 git status ,看有什么文件变更了,用 rsync 逐一同步。同步后将本次同步的文件记下来,下次同步的时候再尝试更新一次,避免有的文件恢复后在 git stauts 里不再展示,导致远程代码还是修改后的版本。
这套搞完了以后给 neovim 加个监听,如果在特定文件夹编辑文本,一旦保存,就调用上面的程序使用 rsync 同步修改。调用时使用 AsyncRun ,完全无感。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/981763

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX