openUBMC Vim 工程化配置指南
面向社区公共环境的最小可行配置(MVP),强调“少装、可复制、不冲突”。
术法开篇
在 openUBMC 的日常开发里,YAML 清单与 Lua 代码几乎无处不在:前者需要按真实 Schema 校验与补全,后者则要求跨模块一键跳转。为了让 Vim 在这些高频场景里“像 VSCode 一样顺手”,本文提供一套极简、可离线、无侵入的做法:
- YAML:只走一条主线——安装
coc-yaml,并在文件第一行绑定到真实 Schema,即可获得补全 / 悬浮说明 / 校验 / 保存格式化;配置保持极简。(→ 见:YAML · 方案 A(最简)) - Lua:把“跳转定义”浓缩为
Ctrl-]一键,按 LSP →require智能 →ctags兜底的优先级执行,Ctrl-T回退;全流程支持内网/离线包与软链。
这套术法坚持三个原则:
- 少装:一个插件只解决一个问题;
- 不冲突:与现有
vimrc/插件和平共处; - 可复制:命令行步骤可一键拷贝到任意机器。
细节亮点:
- YAML 悬浮说明可设置延迟 2s;
- 可移除大块同词黄色高亮,避免“满屏泛黄”;
- 保留
K主动触发的同时,提供自动悬浮作为加速选项; - Lua 跳转遵循“先精确、后模糊”的分层:LSP 精确解析 →
require关系智能推导 →ctags文件级兜底。
你可以只挑自己当下最痛的一项,五分钟完成体验升级:先把 YAML“开箱即用”,再把 Lua 的“
Ctrl-]一键直达”装到好。
Lua 跳转一键装到好(离线保姆级)
目标:只按 Ctrl-] 就能跳(LSP 优先 → require 智能 → ctags 兜底),Ctrl-T 回退。全流程离线/内网可用。
1)装基础依赖(Ubuntu 24.04)
apt-get update
apt-get install -y vim git curl nodejs npm universal-ctags || apt-get install -y exuberant-ctags
(可选)第 0 步:代理
如需代理,把下面的地址换成你的代理并执行:
export http_proxy=http://192.168.16.106:7890
export https_proxy=$http_proxy
export no_proxy="localhost,127.0.0.1,::1,.local"
# Git 走代理
git config --global http.proxy $http_proxy
git config --global https.proxy $https_proxy
# npm 走代理(可选换镜像)
npm config set proxy $http_proxy
npm config set https-proxy $https_proxy
# npm config set registry https://registry.npmmirror.com
删除代理:
# 取消环境变量
unset http_proxy
unset https_proxy
unset no_proxy
# Git 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
# npm 取消代理
npm config delete proxy
npm config delete https-proxy
# 如果你之前换过 registry,这里可以还原(可选)
npm config delete registry
2)安装插件管理器(vim-plug)
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Lua 跳转一键装到好(离线保姆级)
目标:只按 Ctrl-] 就能跳(LSP 优先 → require 智能 → ctags 兜底),Ctrl-T 回退。全流程离线/内网可用。
0)先说明两件事
-
Vim 的命令区分大小写:是
: CocInfo不是: cocinfo。 -
我们不用 coc-lua,而是离线解压 lua-language-server 并让 coc 直接调用。
1)装基础依赖(Ubuntu 24.04)
apt-get update
apt-get install -y vim git curl nodejs npm universal-ctags || apt-get install -y exuberant-ctags
(可选)第 0 步:代理
如需代理,把下面的地址换成你的代理并执行:
export http_proxy=http://192.168.16.106:7890
export https_proxy=$http_proxy
export no_proxy="localhost,127.0.0.1,::1,.local"
# Git 走代理
git config --global http.proxy $http_proxy
git config --global https.proxy $https_proxy
# npm 走代理(可选换镜像)
npm config set proxy $http_proxy
npm config set https-proxy $https_proxy
# npm config set registry https://registry.npmmirror.com
删除代理:
# 取消环境变量
unset http_proxy
unset https_proxy
unset no_proxy
# Git 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
# npm 取消代理
npm config delete proxy
npm config delete https-proxy
# 如果你之前换过 registry,这里可以还原(可选)
npm config delete registry
2)安装插件管理器(vim-plug)
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
3)离线安装 lua-language-server(仅下载 + 建软链)
只提供可复制的下载命令(不解压)。下载完成后,你再自行解压到
/opt/lua-language-server,最后执行ln -s建软链即可。
3.1 选择架构 & 版本
uname -m # x86_64 → 选 linux-x64;aarch64/arm64 → 选 linux-arm64
VERSION=latest # 也可改为固定版本号,如 3.10.5
3.2 一键下载(自动挑 glibc,排除 musl)
A) 最新版本(自动匹配架构)
首先 cd /opt
ARCH=$(uname -m); PATTERN=$([ "$ARCH" = x86_64 ] || [ "$ARCH" = amd64 ] && echo linux-x64 || echo linux-arm64)
curl -sL https://api.github.com/repos/LuaLS/lua-language-server/releases/latest \
| grep -Eo "https://[^\" ]*${PATTERN}.*\.tar\.gz" \
| grep -vi musl \
| head -n1 \
| xargs -I{} sh -c 'echo downloading: {}; curl -L -o /opt/lua-language-server.tar.gz "{}"'
B) 指定版本(可重复构建)
VERSION=3.10.5 # ← 改成你要的版本
ARCH=$(uname -m); FILE=$([ "$ARCH" = x86_64 ] || [ "$ARCH" = amd64 ] && echo linux-x64 || echo linux-arm64)
URL="https://github.com/LuaLS/lua-language-server/releases/download/${VERSION}/lua-language-server-${VERSION}-${FILE}.tar.gz"
curl -L -o /opt/lua-language-server-${VERSION}.tar.gz "$URL"
提示:下载得到的文件在
/opt/lua-language-server.tar.gz
后文结构预告(草案)
- YAML · 方案 A(最简可复制):
coc.nvim + coc-yaml安装与最小coc-settings.json;首行$schema绑定;格式化与校验;常见坑位与修复。 - Lua · 离线保姆级:
lua-language-server离线获取与软链;Ctrl-]优先级(LSP → require 智能 → ctags);Ctrl-T回退;tags生成与增量更新。 - 待定
文中所有配置均提供“可复制块”,并附内网/离线替代路径。