必须先安装并验证 Fitten Code CLI 可执行文件,再禁用 Vim 内置补全冲突,最后通过 vim-lsp 或自定义 omnifunc 接入补全后端,并优化触发逻辑与视觉反馈。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在纯终端 Vim 环境中使用 Fitten Code 时,因缺乏 VSCode 的原生插件沙箱和 GUI 进程管理,直接复用其 VSCode 配置会导致补全卡顿、响应延迟甚至无响应。必须通过 .vimrc 显式接管通信协议、禁用冲突功能并桥接 CLI 工具链。
确认 Fitten Code CLI 可执行文件路径
打开终端,运行 fitten-code --version。若提示 command not found,说明 CLI 未安装或未加入 PATH —— 此时需先从官方 GitHub Releases 页面下载对应平台的 fitten-code-cli 二进制文件(Linux/macOS 选 fitten-code-linux-amd64 或 fitten-code-darwin-arm64),赋予可执行权限:chmod +x fitten-code,再移动至 /usr/local/bin/ 或用户 bin 目录。
验证成功后,终端应输出类似 v1.8.3 (build 20260521) 的版本号。这一步是后续所有配置生效的前提,【CLI 不可用则整个补全链路彻底中断】。
禁用 Vim 内置补全引擎冲突
在 ~/.vimrc 中添加以下三行,强制关闭与 Fitten Code 协议不兼容的默认补全机制:
set complete-=iset complete-=kset omnifunc=
这会移除内置的关键字补全(i)、字典补全(k)和 Omni 补全函数,避免它们与 Fitten Code 的 LSP 响应竞争光标焦点。不执行此步,你会在输入中途频繁弹出无关候选框,打断补全流。
配置 Fitten Code 作为异步补全后端
方法一:使用 vim-lsp + fitten-code-lsp-server(推荐)
Fitten Code 1.0.3是一款由清华博士团队打造的AI编程助手,基于国产计图(Jittor)深度学习框架开发。它支持VS Code、JetBrains系列等主流IDE及80多种编程语言。核心功能包括智能代码补全、注释生成、代码解释、Bug检测、单元测试生成等,旨在全方位提升开发效率。该工具对个人用户免费开放。
1. 安装 vim-lsp 插件:在 .vimrc 中加入 Plug 'prabirshrestha/vim-lsp',执行 :PlugInstall;
2. 启动 fitten-code-lsp-server:在后台运行 fitten-code-lsp-server --port 4242 &,确保端口未被占用;
3. 在 .vimrc 中注册服务器:
if executable('fitten-code-lsp-server')<br>
au User lsp_setup call lsp#register_server({<br>
\ 'name': 'fitten-code',<br>
\ 'cmd': {server_info->['fitten-code-lsp-server', '--port', '4242']},<br>
\ 'whitelist': ['*'],<br>
\ })<br>
endif
方法二:直连 CLI(轻量级,适合低配终端)
在 .vimrc 中添加:
function! FittenComplete(findstart, base)<br>
if a:findstart<br>
let line = getline('.')<br>
let start = col('.') - 1<br>
while start > 0 && line[start - 1] =~ '\w'<br>
let start -= 1<br>
endwhile<br>
return start<br>
else<br>
let candidates = systemlist('echo "' . a:base . '" | fitten-code complete --stdin --language=' . &filetype)<br>
return candidates != [''] ? candidates : []<br>
endif<br>
endfunction<br>
setlocal omnifunc=FittenComplete
该函数将每次补全请求转为 shell 调用,依赖 fitten-code CLI 的 --stdin 模式。注意:它会在每次触发时新建进程,【不建议在超大文件中高频触发】。
优化触发体验与视觉反馈
在 .vimrc 中追加以下配置,让补全更贴合终端直觉:
inoremap <expr><TAB> pumvisible() ? "\<C-n>" : "\<C-x>\<C-u>"<br> inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-g>"<br> set shortmess+=c<br> set pumheight=6
第一行让 Tab 键在补全菜单展开时向下切换,在未展开时触发用户定义的补全(即 FittenComplete);第二行用 Shift+Tab 反向选择;第三行隐藏“--completion--”类提示,减少干扰;最后一行限制候选框高度,防止遮挡代码行。

















