共191行

neovim的LSP远程连接

2026-04-21 11:55:13

问题

我有两台电脑分别是:A: Ubuntu,B: MacOSX。在A和B上都装上最新版的neovim,介绍一下,如何在B上通过neovim的LSP连接A上的环境呢?

要在MacOSX(B)上通过Neovim的LSP连接Ubuntu(A)上的环境,需要先在两台电脑上安装最新版Neovim,然后配置SSH连接,最后选择合适的远程LSP方案。以下是详细步骤:

先说结论

一、在两台电脑上安装最新版Neovim

Ubuntu(A)安装方法

  1. 通过APT安装(稳定版但可能不是最新)

    sudo apt update
    sudo apt install neovim
  2. 通过Snap安装(获取较新版本)

    sudo snap install nvim --classic
  3. 下载AppImage(获取最新版本)

    curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage
    chmod u+x nvim.appimage
    sudo mv nvim.appimage /usr/local/bin/nvim

MacOSX(B)安装方法

  1. 通过Homebrew安装(推荐)

    brew install neovim
  2. 下载预编译二进制

    # 根据芯片选择x86_64或arm64版本
    curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-macos-x86_64.tar.gz
    tar xzf nvim-macos-x86_64.tar.gz
    sudo mv nvim-macos-x86_64/bin/nvim /usr/local/bin/

验证安装:在两台电脑上运行 nvim --version 确认安装成功。

二、配置SSH连接

确保从MacOSX(B)可以SSH连接到Ubuntu(A):

# 在B上测试连接
ssh user@ubuntu-ip-address

如果使用密钥认证,确保公钥已添加到A的 ~/.ssh/authorized_keys 中。

三、在B上配置远程LSP连接

有几种主流方案可选:

方案一:使用coc.nvim(功能全面,类似VSCode体验)

  1. 在B上安装coc.nvim插件

    " 使用vim-plug安装
    Plug 'neoclide/coc.nvim', {'branch': 'release'}
  2. 配置coc.nvim连接远程LSP
    ~/.config/nvim/coc-settings.json 中添加:

    {
      "remote.SSH.enable": true,
      "remote.SSH.server": "user@ubuntu-ip-address",
      "remote.SSH.configPath": "~/.ssh/config",
      "workspace.folder": "/path/to/remote/project"
    }
  3. 在A上安装语言服务器

    # 例如安装Python语言服务器
    npm install -g pyright
    # 或安装TypeScript语言服务器
    npm install -g typescript-language-server
  4. 在A的coc-settings.json中配置LSP路径

    {
      "languageserver": {
        "python": {
          "command": "pyright-langserver",
          "args": ["--stdio"],
          "filetypes": ["python"]
        }
      }
    }

方案二:使用remote-nvim.nvim(专为远程开发设计)

  1. 在B上安装插件

    -- 使用lazy.nvim
    {
      "amitds1997/remote-nvim.nvim",
      dependencies = {
        "nvim-lua/plenary.nvim",
        "MunifTanjim/nui.nvim",
        "nvim-telescope/telescope.nvim"
      },
      config = true
    }
  2. 配置远程连接

    require('remote').setup({
      connections = {
        {
          name = "ubuntu-dev",
          host = "ubuntu-ip-address",
          user = "your-username",
          port = 22,
          path = "/path/to/project"
        }
      }
    })
  3. 通过命令连接

    :RemoteOpen ubuntu-dev

方案三:使用distant.nvim(Alpha阶段但功能专一)

  1. 安装插件

    Plug 'chipsenkbeil/distant.nvim'
  2. 配置远程连接

    require('distant').setup({
      mode = "ssh",
      host = "ubuntu-ip-address",
      user = "your-username"
    })

方案四:直接配置LSP连接远程服务器(基础方案)

  1. 在A上启动LSP服务器并监听端口

    # 例如启动PHP语言服务器
    php-language-server --tcp=0.0.0.0:2080 --memory-limit=4G
  2. 在B的Neovim配置中连接远程LSP

    -- 使用nvim-lspconfig
    require('lspconfig').php.setup({
      cmd = { 'php-language-server', '--tcp=ubuntu-ip-address:2080' }
    })

四、验证连接

  1. 检查LSP状态

    :LspInfo
  2. 测试功能

五、性能优化建议

针对远程连接的高延迟环境:

  1. 调整超时设置:"suggest.timeout": 5000
  2. 禁用非必要功能:"codeLens.enable": false
  3. 减少自动触发:"suggest.autoTrigger": "none"

总结

推荐使用coc.nvim方案,因为它提供了最完整的远程开发体验,包括文件浏览、LSP集成和配置同步。remote-nvim.nvim也是一个很好的选择,特别适合需要完整远程编辑环境的用户。

关键点:

  1. 确保SSH连接稳定,可配置 ServerAliveInterval 防止断开
  2. 语言服务器应安装在Ubuntu(A)上以减少网络延迟
  3. 根据项目类型选择合适的语言服务器
  4. 首次配置后建议运行 :checkhealth 检查各项功能状态

这样就能在MacOSX上享受Ubuntu开发环境的完整LSP功能,包括代码补全、定义跳转、错误检查等。