Kumo31
4.72D
V2EX  ›  Vim

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

By Kumo31 at 2023 年 10 月 13 日 · 6255 次点击

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

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

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

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

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

  • 项目的规模较大,而且比较底层,对 kernel 和工具链有很多特殊依赖。本机是台 mac ,没法直接跑,配置也不够开一台能 cover 的虚拟机。所以也希望 remote 时能使用开发机中的 LSP/工具链

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

  • VSCode 不够「 Vim 」,Vim 插件基本只能在编辑区起作用,像 expolrer 和其他组件大多没法用 Vim 的方式去交互,体验割裂。如果有解决方案,也欢迎分享
18 条回复  •  2023-11-23 15:09:47 +08:00
leisurelylicht
   1
leisurelylicht  
   2023 年 10 月 13 日
同求,一直在找 neovim 比较满意的远程开发方案
sam0ple
   2
sam0ple  
   2023 年 10 月 13 日   ❤️ 1
smb 挂载远程目录,在本地开发?
darksword21
   3
darksword21  
   2023 年 10 月 13 日
用 emacs + evil + tramp
hellodudu86
   4
hellodudu86  
   2023 年 10 月 13 日
以前我也纯 vim 用户,切换到 vscode+vim 插件好几年了,以前不想这种混搭模式也是因为不够 vim ,现在回头看当时真的只是在“为难”自己
tY3N62hFz90E74bK
   5
tY3N62hFz90E74bK  
   2023 年 10 月 13 日
在 vscode 上装 nvim 插件,这样就有了 vim 的生态,也有 vscode remote 开发的畅快体验了
ho121
   6
ho121  
   2023 年 10 月 13 日 via Android
ssh 打开压缩试试?
L4Linux
   7
L4Linux  
   2023 年 10 月 13 日 via Android
@darksword21 tramp 体验挺烂的
chikai
   8
chikai  
   2023 年 10 月 13 日
还是 VSCode + Vim 吧,习惯就好了
xgdgsc
   9
xgdgsc  
   2023 年 10 月 13 日 via Android
ssh -X 或者 nomachine 远程控制 或者在 vscode remote 的终端里用 vim?
iridescent0rsy
   10
iridescent0rsy  
   2023 年 10 月 13 日 via Android
@sam0ple 还有 sshfs 也行,服务器也不用另外配置文件服务
iridescent0rsy
   11
iridescent0rsy  
   2023 年 10 月 13 日 via Android
@iridescent0rsy 啊,没看全原文,楼主已经用过了 😂
yzwduck
   12
yzwduck  
   2023 年 10 月 13 日   ❤️ 2
试试用 UDP 的 mosh (mobile shell) 会不会降低一点网络延迟?
keyv
   13
keyv  
   2023 年 10 月 13 日 via iPhone
目前没有比较成熟的方案,如果感兴趣可以看一下 https://github.com/chipsenkbeil/distant.nvim
darksword21
   14
darksword21  
   2023 年 10 月 14 日 via iPhone
@L4Linux 没感觉,我用了一年多了
xxgj
   15
xxgj  
   2023 年 10 月 14 日
我恰好也遇到過類似的問題,最終的折衷方案是使用 Git ,不一定適用於 OP...

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