V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Kumo31
V2EX  ›  Vim

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

  •  
  •   Kumo31 · 2023-10-13 17:09:04 +08:00 · 3678 次点击
    这是一个创建于 405 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    更具體來說,LSP 依然使用 Mac 的,有需要編譯或測試時,把目前的代碼變更 push 到遠程的個人分支,再從開發機上 pull 下來進行編譯等操作。這一套流程可以在本地直接調用 ssh 的命令完成,最後再配置一個編譯完成後的 slack 提醒,基本上就是我日常的 workflow 了:)
    acerphoenix
        16
    acerphoenix  
       2023-10-15 09:45:08 +08:00
    用 vscode 也会延迟吧,毕竟你网络差。我觉得还得本地开发,起个类似 syncthing 服务一直异步同步,当然调试什么的就没戏了。
    Kumo31
        17
    Kumo31  
    OP
       2023-10-16 14:04:48 +08:00
    @yzwduck #12 体验了下,mosh 很不错,感谢
    Meursau1T
        18
    Meursau1T  
       364 天前
    我自己折腾了套方案:
    先尝试直接用 rsync 同步,他的增量同步有点问题,容易导致远程起的服务刷新太多文件。
    后面干脆写了个脚本,调用 git status ,看有什么文件变更了,用 rsync 逐一同步。同步后将本次同步的文件记下来,下次同步的时候再尝试更新一次,避免有的文件恢复后在 git stauts 里不再展示,导致远程代码还是修改后的版本。
    这套搞完了以后给 neovim 加个监听,如果在特定文件夹编辑文本,一旦保存,就调用上面的程序使用 rsync 同步修改。调用时使用 AsyncRun ,完全无感。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3021 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:07 · PVG 22:07 · LAX 06:07 · JFK 09:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.