跳到主要内容

LSP 服务器配置

OpenCode 通过 LSP(Language Server Protocol)服务器与主流编辑器深度集成,为您提供实时的代码补全、错误提示、重构建议等功能。通过配置 LSP 服务器,您可以在熟悉的编辑器中使用 OpenCode 的强大功能,无需切换工具,大幅提升开发效率。

LSP 就像是"智能助手插件",让您的编辑器变得更聪明。

LSP 系统概览 🔧

什么是 LSP

LSP(Language Server Protocol)是一种标准化的协议,允许编辑器与语言服务器通信。

白话解释:

就像"通用翻译器":

  • 📝 不同的编辑器(VS Code、IntelliJ、Vim)
  • 🧠 同一个智能服务(OpenCode LSP)
  • 🔗 通过 LSP 协议连接

LSP 的特点:

✅ 标准化:编辑器无关,通用协议
✅ 功能丰富:代码补全、诊断、重构等
✅ 实时响应:即时代码分析和建议
✅ 易于集成:主流编辑器都支持

支持的编辑器 📋

VS Code

最流行的代码编辑器,完美支持 LSP。

配置步骤:

  1. 安装 OpenCode 扩展
  2. 配置 LSP 服务器
  3. 启用功能

JetBrains 系列

IntelliJ IDEA、PyCharm、WebStorm 等。

配置步骤:

  1. 安装 LSP 插件
  2. 配置服务器地址
  3. 重启 IDE

Vim / Neovim

强大的编辑器,通过插件支持 LSP。

配置步骤:

  1. 安装 LSP 插件
  2. 配置 coc.nvim 或 nvim-lsp
  3. 设置服务器

Emacs

经典的编辑器,支持 LSP。

配置步骤:

  1. 安装 lsp-mode
  2. 配置服务器
  3. 启用功能

其他编辑器

编辑器LSP 支持插件
Sublime TextLSP 插件
Atomatom-ide-ui
Brackets⚠️有限支持

VS Code 集成 💻

安装扩展

  1. 打开 VS Code
  2. Ctrl+Shift+X 打开扩展面板
  3. 搜索 "OpenCode"
  4. 点击 "Install" 安装

或者通过命令行:

code --install-extension opencode.opencode-lsp

配置服务器

打开 VS Code 设置(Ctrl+,),添加以下配置:

{
"opencodelsp.serverPath": "/usr/local/bin/opencode-lsp",
"opencodelsp.port": 3000,
"opencodelsp.trace.server": "verbose",
"opencodelsp.completion.enable": true,
"opencodelsp.completion.triggerCharacters": [".", "(", "["],
"opencodelsp.diagnostics.enable": true,
"opencodelsp.hover.enable": true,
"opencodelsp.signatureHelp.enable": true,
"opencodelsp.codeAction.enable": true,
"opencodelsp.codeLens.enable": true
}

功能配置

代码补全

{
"opencodelsp.completion.enable": true,
"opencodelsp.completion.showDeprecated": true,
"opencodelsp.completion.completeFunctionCalls": true
}

使用示例:

# 输入:
pri

# 自动补全:
print()

代码诊断

{
"opencodelsp.diagnostics.enable": true,
"opencodelsp.diagnostics.enableResourceDiagnostics": true
}

效果:

# 错误提示:
x = 10
y = 20
# 语法错误:未使用的变量

# 快速修复:
# [删除变量] [在后面使用]

悬停提示

{
"opencodelsp.hover.enable": true,
"opencodelsp.hover.contents": [
"markdown",
"source"
]
}

使用示例:

# 鼠标悬停在函数名上:
def hello(name):
return f"Hello, {name}!"

# 显示:
# ```python
# def hello(name):
# """问候函数"""
# return f"Hello, {name}!"
# ```

签名帮助

{
"opencodelsp.signatureHelp.enable": true,
"opencodelsp.signatureHelp.triggerCharacters": ["(", ","]
}

使用示例:

# 输入:
print(

# 显示:
# print(*args, sep=' ', end='\n', file=sys.stdout, flush=False)
# ^^^^^ 参数高亮

JetBrains 集成 🧩

安装插件

  1. 打开 IDE
  2. 进入 FileSettingsPlugins
  3. 搜索 "LSP Support"
  4. 安装插件
  5. 重启 IDE

配置服务器

进入 FileSettingsLanguages & FrameworksLSP,添加配置:

Language Servers:
- Name: opencodelsp
Command: /usr/local/bin/opencode-lsp
Arguments:
- --stdio
File Mappings:
- pattern: "**/*.py"
language: python
- pattern: "**/*.js"
language: javascript
- pattern: "**/*.ts"
language: typescript

功能配置

代码补全

Completion:
enabled: true
trigger: [".", "(", "["]

诊断

Diagnostics:
enabled: true
severity:
error: Error
warning: Warning
info: Information
hint: Hint

Vim / Neovim 集成 📝

安装 coc.nvim

  1. 使用 Vim-Plug 安装:
" 在 .vimrc 或 init.vim 中添加:
Plug 'neoclide/coc.nvim', {'branch': 'release'}
  1. 安装插件:
vim -c "PlugInstall"

配置 LSP

~/.vim/coc-settings.json 中配置:

{
"languageserver": {
"opencodelsp": {
"command": "/usr/local/bin/opencode-lsp",
"filetypes": ["python", "javascript", "typescript"],
"settings": {}
}
},
"coc.preferences.formatOnSaveFiletypes": ["python", "javascript"],
"coc.preferences.diagnostic.virtualText": true
}

快捷键配置

.vimrc 中添加:

" 代码补全
inoremap <silent><expr> <TAB>
\ pumvisible() ? "\<C-n>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"

" 诊断
nmap <silent> [g <Plug>(coc-diagnostic-prev)
nmap <silent> ]g <Plug>(coc-diagnostic-next)

" 代码操作
nmap <silent> <leader>ac <Plug>(coc-codeaction)
nmap <silent> <leader>qf <Plug>(coc-fix-current)

" 跳转
nmap <silent> gd <Plug>(coc-definition)
nmap <silent> gy <Plug>(coc-type-definition)
nmap <silent> gi <Plug>(coc-implementation)
nmap <silent> gr <Plug>(coc-references)

Neovim 原生 LSP 🚀

配置 nvim-lsp

~/.config/nvim/lua/lsp.lua 中配置:

local lspconfig = require('lspconfig')

-- 配置 OpenCode LSP
lspconfig.opencodelsp.setup({
cmd = {"/usr/local/bin/opencode-lsp", "--stdio"},
filetypes = {"python", "javascript", "typescript"},
settings = {},
flags = {
debounce_text_changes = 150,
},
capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()),
})

-- 自动格式化
vim.api.nvim_create_autocmd("BufWritePre", {
pattern = "*.py",
callback = function()
vim.lsp.buf.formatting_sync(nil, 1000)
end,
})

快捷键配置

-- 代码补全
local opts = { noremap=true, silent=true }

-- 跳转到定义
vim.api.nvim_buf_set_keymap(0, 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)

-- 悬停
vim.api.nvim_buf_set_keymap(0, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)

-- 诊断
vim.api.nvim_buf_set_keymap(0, 'n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
vim.api.nvim_buf_set_keymap(0, 'n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)

-- 代码操作
vim.api.nvim_buf_set_keymap(0, 'n', '<leader>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)

Emacs 集成 📖

安装 lsp-mode

~/.emacs~/.emacs.d/init.el 中添加:

(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/"))
(package-initialize)

;; 安装 lsp-mode
(unless (package-installed-p 'lsp-mode)
(package-install 'lsp-mode))

配置 OpenCode LSP

;; 配置 OpenCode LSP
(use-package lsp-mode
:ensure t
:config
(lsp-register-custom-settings
'(("opencodelsp.serverPath" "/usr/local/bin/opencode-lsp")))

:hook
((python-mode . lsp)
(js-mode . lsp)
(typescript-mode . lsp)))

快捷键配置

;; LSP 快捷键
(use-package lsp-mode
:bind
(:map lsp-mode-map
("C-c C-a" . lsp-execute-code-action)
("C-c C-r" . lsp-rename)
("C-c C-f" . lsp-format-buffer)
("C-c C-h" . lsp-describe-thing-at-point)
("C-c C-d" . lsp-ui-doc-glance)))

;; 诊断
(use-package lsp-ui
:ensure t
:config
(setq lsp-ui-doc-enable t
lsp-ui-doc-use-childframe t))

功能详解 📚

代码补全

OpenCode LSP 提供智能代码补全功能。

特点:

  • 🎯 基于上下文的智能建议
  • 📝 自动完成函数调用
  • 🔍 搜索相关代码
  • 📊 显示参数提示

代码诊断

实时检测代码错误和警告。

诊断类型:

类型说明示例
Error错误语法错误、未定义变量
Warning警告未使用的导入、类型不匹配
Info信息代码建议、最佳实践
Hint提示优化建议、重构提示

代码操作

自动化的代码修复和重构。

操作类型:

  • 🔄 快速修复
  • 📝 重构
  • ✂️ 删除未使用代码
  • 📋 提取函数
  • 🔧 重命名

代码导航

快速跳转到定义、引用等。

导航功能:

  • 📍 跳转到定义
  • 🔍 查找引用
  • 🏷️ 查找类型定义
  • 🔗 跳转到实现

性能优化 ⚡

缓存配置

{
"opencodelsp.cache.enabled": true,
"opencodelsp.cache.maxSize": "512MB",
"opencodelsp.cache.ttl": 3600
}

禁用不必要的功能

{
"opencodelsp.codeLens.enable": false,
"opencodelsp.semanticHighlighting.enable": false
}

增量更新

{
"opencodelsp.incrementalSync": true,
"opencodelsp.debounce": 150
}

实际应用案例 📊

案例 1:Python 开发 🐍

场景: 使用 VS Code 开发 Python 项目

配置:

{
"opencodelsp.serverPath": "/usr/local/bin/opencode-lsp",
"python.linting.enabled": false,
"python.analysis.autoSearchPaths": true,
"opencodelsp.diagnostics.enable": true,
"opencodelsp.completion.enable": true
}

使用流程:

1. 打开 Python 文件
2. LSP 自动连接
3. 实时代码诊断
4. 智能代码补全
5. 快速修复错误

案例 2:JavaScript 开发 📜

场景: 使用 WebStorm 开发 JavaScript 项目

配置:

LSP Servers:
opencodelsp:
command: /usr/local/bin/opencode-lsp
filetypes:
- javascript
- typescript
diagnostics:
enabled: true
completion:
enabled: true

案例 3:TypeScript 开发 📘

场景: 使用 Neovim 开发 TypeScript 项目

配置:

lspconfig.opencodelsp.setup({
cmd = {"/usr/local/bin/opencode-lsp"},
filetypes = {"typescript", "typescriptreact"},
settings = {
typescript = {
format = {
enable = true
}
}
}
})

常见问题 ❓

Q1: LSP 服务器无法启动怎么办?❌

A: 检查服务器路径和权限。

# 检查服务器是否安装
which opencode-lsp

# 测试服务器
opencode-lsp --version

# 检查权限
ls -la /usr/local/bin/opencode-lsp

# 修复权限
chmod +x /usr/local/bin/opencode-lsp

Q2: 代码补全不工作怎么办?⚠️

A: 检查配置和功能开关。

# 检查 LSP 日志
opencode lsp logs

# 重新加载 LSP
opencode lsp restart

# 验证配置
opencode lsp validate

Q3: 如何提升 LSP 性能?⚡

A: 多种优化策略。

{
"opencodelsp.cache.enabled": true,
"opencodelsp.incrementalSync": true,
"opencodelsp.debounce": 150,
"opencodelsp.codeLens.enable": false
}

Q4: 支持哪些编程语言?🌐

A: 支持多种语言。

语言支持备注
Python完全支持
JavaScript完全支持
TypeScript完全支持
Java完全支持
Go完全支持
Rust完全支持
C++⚠️部分支持
PHP⚠️部分支持

下一步 ➡️

LSP 配置完成后,您可以:

  1. 配置 MCP 服务:查看 MCP 服务配置
  2. 学习快捷键:查看 快捷键配置
  3. 查看最佳实践:查看 代码工程
  4. 了解架构:查看 架构设计

总结 📝

LSP 让 OpenCode 与您的编辑器无缝集成。

配置清单:

🔧 LSP 服务器
[ ] 安装 LSP 服务器
[ ] 测试服务器运行
[ ] 配置服务器参数
[ ] 验证连接

💻 编辑器集成
[ ] 安装编辑器插件
[ ] 配置服务器连接
[ ] 设置快捷键
[ ] 测试功能

⚡ 性能优化
[ ] 启用缓存
[ ] 配置增量更新
[ ] 禁用不必要功能
[ ] 监控性能

常用编辑器配置:

VS Code:
安装扩展 → 配置服务器 → 启用功能

JetBrains:
安装插件 → 配置 LSP → 重启 IDE

Neovim:
安装 lsp-mode → 配置服务器 → 设置快捷键

🎉 LSP 配置完成!

现在您的编辑器拥有了 OpenCode 的智能能力!🚀