平常都是直接 ssh 到开发机上 nvim 写代码。前段时间机房搬迁后,到开发机的延迟高了不少,编辑时虽然算不上卡,但明显能感觉到操作延迟。一开始使用 (N)vim 就是为了「爽」,现在体验却大大降低了。v 友们是怎么用 vim 远程开发的
比较理想的是像 VSCode Remote 那样的体验,操作、渲染在本地实现,只在后台异步同步,同时 LSP 也是使用服务端的
简单尝试过 sshfs ,虽然操作(移动光标)是流畅了,但问题更多。不说 LSP/Terminal ,单文件系统的速度就慢的不行,完全没法用
也看过社区中的相关讨论: https://github.com/neovim/neovim/issues/21635 , 没得到什么结论
为什么不直接在本地开发?
为什么直接使用 VSCode + Vim 插件?
1
leisurelylicht 2023-10-13 17:19:25 +08:00
同求,一直在找 neovim 比较满意的远程开发方案
|
2
sam0ple 2023-10-13 17:26:38 +08:00 1
smb 挂载远程目录,在本地开发?
|
3
darksword21 2023-10-13 17:36:56 +08:00
用 emacs + evil + tramp
|
4
hellodudu86 2023-10-13 18:03:49 +08:00
以前我也纯 vim 用户,切换到 vscode+vim 插件好几年了,以前不想这种混搭模式也是因为不够 vim ,现在回头看当时真的只是在“为难”自己
|
5
daydreamcafe 2023-10-13 18:34:04 +08:00
在 vscode 上装 nvim 插件,这样就有了 vim 的生态,也有 vscode remote 开发的畅快体验了
|
6
ho121 2023-10-13 18:39:28 +08:00 via Android
ssh 打开压缩试试?
|
7
L4Linux 2023-10-13 19:07:04 +08:00 via Android
@darksword21 tramp 体验挺烂的
|
8
chikai 2023-10-13 19:13:44 +08:00
还是 VSCode + Vim 吧,习惯就好了
|
9
xgdgsc 2023-10-13 19:35:30 +08:00 via Android
ssh -X 或者 nomachine 远程控制 或者在 vscode remote 的终端里用 vim?
|
10
iridescent0rsy 2023-10-13 22:05:38 +08:00 via Android
@sam0ple 还有 sshfs 也行,服务器也不用另外配置文件服务
|
11
iridescent0rsy 2023-10-13 22:06:32 +08:00 via Android
@iridescent0rsy 啊,没看全原文,楼主已经用过了 😂
|
12
yzwduck 2023-10-13 22:16:59 +08:00 2
试试用 UDP 的 mosh (mobile shell) 会不会降低一点网络延迟?
|
13
keyv 2023-10-13 22:51:38 +08:00 via iPhone
目前没有比较成熟的方案,如果感兴趣可以看一下 https://github.com/chipsenkbeil/distant.nvim
|
14
darksword21 2023-10-14 01:31:53 +08:00 via iPhone
@L4Linux 没感觉,我用了一年多了
|
15
xxgj 2023-10-14 22:36:15 +08:00
我恰好也遇到過類似的問題,最終的折衷方案是使用 Git ,不一定適用於 OP...
更具體來說,LSP 依然使用 Mac 的,有需要編譯或測試時,把目前的代碼變更 push 到遠程的個人分支,再從開發機上 pull 下來進行編譯等操作。這一套流程可以在本地直接調用 ssh 的命令完成,最後再配置一個編譯完成後的 slack 提醒,基本上就是我日常的 workflow 了:) |
16
acerphoenix 2023-10-15 09:45:08 +08:00
用 vscode 也会延迟吧,毕竟你网络差。我觉得还得本地开发,起个类似 syncthing 服务一直异步同步,当然调试什么的就没戏了。
|
18
Meursau1T 2023-11-23 15:09:47 +08:00
我自己折腾了套方案:
先尝试直接用 rsync 同步,他的增量同步有点问题,容易导致远程起的服务刷新太多文件。 后面干脆写了个脚本,调用 git status ,看有什么文件变更了,用 rsync 逐一同步。同步后将本次同步的文件记下来,下次同步的时候再尝试更新一次,避免有的文件恢复后在 git stauts 里不再展示,导致远程代码还是修改后的版本。 这套搞完了以后给 neovim 加个监听,如果在特定文件夹编辑文本,一旦保存,就调用上面的程序使用 rsync 同步修改。调用时使用 AsyncRun ,完全无感。 |