Skip to content

3. 支持的语言(languages support)

lijing00333 edited this page Aug 21, 2025 · 2 revisions

补全类型(complete types)

基本的补全类型有:

  • 1)缓冲区关键词:buf
  • 2)字典:dict
  • 3)代码片段:snips(依赖 LuaSnip 或者 ultisnips)
  • 4)路径补全:directory
  • 5)lsp 补全:需要安装对应语言的 lsp server

前四种类型不需要安装 lsp server,其中代码片段展开的支持需要依赖 LuaSnip(nvim)或者 ultisnips(vim)。

snippet support relies on LuaSnip (nvim) or ultisnips (vim).

支持的语言和安装 lsp (install lsp server)

lsp 的安装 (install lsp)

支持两种方法安装 lsp 服务.

  1. vim/nvim: :InstallLspServer.
  2. nvim: 基于 mason.nvim, 执行 :MasonInstall {lsp-server-name}

通过:InstallLspServer命令安装 LSP 服务的路径: ~/.config/vim-easycomplete/servers

执行InstallLspServer命令时可以带上(语言)插件名称,也可以不带,下面两种都可以:

  • :InstallLspServer
  • :InstallLspServer lua

支持的语言列表

所有支持的语言:

名称 语言 LSP 服务 是否需要安装 LSP 依赖 插件地址
path path No Need 内置 内置
buf buf & dict No Need 内置 内置
snips Snippets ultisnips/LuaSnip 内置 python3/lua 内置
ts js/ts tsserver Yes node/npm 内置
deno js/ts denols Yes deno 内置
tn TabNine TabNine Yes 内置
vim Vim vimls Yes node/npm 内置
cpp C/C++/OC clangd Yes 内置
css CSS cssls Yes node/npm 内置
html HTML html Yes node/npm 内置
yml YAML yamlls Yes node/npm 内置
xml Xml lemminx Yes java/jdk 内置
sh Bash bashls Yes node/npm 内置
json JSON json-languageserver Yes node/npm 内置
php php intelephense Yes node/npm 内置
dart dart dartls Yes 内置
py Python pylsp Yes python3/pip3 内置
java Java jdtls Yes java11/jdk 内置
go Go gopls Yes go 内置
r R r-languageserver Yes R 内置
rb Ruby solargraph Yes ruby/bundle 内置
lua Lua sumneko_lua Yes Lua 内置
nim Nim nimls Yes nim/nimble 内置
rust Rust rust_analyzer Yes 内置
kt Kotlin kotlin_language_server Yes java/jdk 内置
grvy Groovy groovyls Yes java/jdk 内置
cmake cmake cmake Yes python3/pip3 内置
c# C# omnisharp-lsp Yes 内置
zig zig zls Yes zig 内置
docker docker dockerfile-language-server Mason node/npm easycomplete-docker

更多 lsp 服务相关信息:

增加 lsp 支持的文件类型(add more filetypes for lsp)

可以自行增加 lsp 所支持的语言类型,当然通常情况下不需要这么做:

vimscript

" vim
let g:easycomplete_filetypes = {
      \   "sh": {
      \     "whitelist": ["shell"]
      \   },
      \   "r": {
      \     "whitelist": ["rmd", "rmarkdown"]
      \   },
      \ }

luascript

-- lua
filetypes = {
    sh = {
        whitelist = {"shell"}
    },
    r = {
        whitelist = {"rmd", "rmarkdown"}
    }
}

更改源的 lsp server (Custom lsp server)

通过 lsp_server 进行配置,key 为需要设定 lsp server 的 插件源名称,比如更改 .py 的 lsp 为 "jedi-language-server":

lsp_server = {
  py = "jedi-language-server"
}

需要自行安装jedi-language-server

Snippets 代码片段支持 (snippets support)

Vim-Easycomplete 的代码片段支持依赖 ultisnipsLuaSnip。只需在依赖字段中引用进来即可。性能考虑,推荐优先使用 L3MON4D3/LuaSnip(只支持 nvim),兼容考虑使用 SirVer/ultisnips(支持 vim/nvim)。 你可以增加 snippets 目录到 &runtimepath 中。

你可以设置自己的 snippets 路径:

custom snippets path for L3MON4D3/LuaSnip:

vimscript

" vim
let g:easycomplete_custom_snippet = "./path/to/your/snippets"

luascript

-- lua
vim.g.easycomplete_custom_snippet = "./path/to/your/snippets"

TabNine 补全 (TabNine support)

安装 lsp :InstallLspServer tabnine.

配置 Tabnine: g:easycomplete_tabnine_config,两个配置:

  • line_limit: 参与计算的行数. 越小速度越快,越大补全更准. (默认: 1000)
  • max_num_result: 在补全菜单中显示几个推荐项. (默认: 3)

vimscript

" vim
let g:easycomplete_tabnine_config = {
    \ 'line_limit': 1000,
    \ 'max_num_result' : 3,
    \ }

luascript

-- lua
vim.g.easycomplete_tabnine_config = {
    line_limit = 1000,
    max_num_result = 3
}

TabNine 不使用 APIKey 就可以运行。如果你是 Tabnine 的付费用户,可以配置 API key 获得行内补全的增强。通过在文件中敲入魔术字符Tabnine::config来激活配置面板。文档

TabNine can run without using an APIKey. If you are a paying user of Tabnine, you can configure the API key to obtain the enhancement of in-line completion. Activate the configuration panel by typing Tabnine::config.

AICoding 行内建议提示 (inline coding supports)

除了补全菜单中包含 AI 建议项之外,插件还支持行内 AI 补全提醒。有这几种方案:

1)Tabnine 行内提醒 (inline coding supports)

Vim-easycomplete 默认支持 Tabnine。Tabnine 是本地运算补全结果的比较好的选择(最新版已经更新至 deep-tabnine,只支持云端补全),速度考虑,插件只支持了 Tabnine 的本地补全的版本。

Vim-easycomplete supports Tabnine by default. Tabnine is a relatively good choice for local completion. (the latest version has been updated to deep-tabnine, which only supports cloud mode). Considering speed, the plugin only supports the local completion version of Tabnine.

安装 :InstallLspServer tabnine.

启用 Tabnine 的行内补全 (enable inline coding supports): tabnine_suggestion = 1.

Tabnine 虽然运行速度快且稳定,但比较古老,行内补全推荐使用 Copilot.nvim,支持三类模型 DeepSeek、千问和 Aone。

3) Aone Copilot

阿里巴巴工程师,无脑使用 Aone Copilot,速度和质量都很高,ATA 上搜一下就有用 Copilot.nvim 的配置方法。