openUBMC Vim 工程化配置指南草稿

openUBMC Vim 工程化配置指南

面向社区公共环境的最小可行配置(MVP),强调“少装、可复制、不冲突”。

术法开篇

在 openUBMC 的日常开发里,YAML 清单Lua 代码几乎无处不在:前者需要按真实 Schema 校验与补全,后者则要求跨模块一键跳转。为了让 Vim 在这些高频场景里“像 VSCode 一样顺手”,本文提供一套极简、可离线、无侵入的做法:

  • YAML:只走一条主线——安装 coc-yaml,并在文件第一行绑定到真实 Schema,即可获得补全 / 悬浮说明 / 校验 / 保存格式化;配置保持极简。(→ 见:YAML · 方案 A(最简)
  • Lua:把“跳转定义”浓缩为 Ctrl-] 一键,按 LSP → require 智能 → ctags 兜底的优先级执行,Ctrl-T 回退;全流程支持内网/离线包与软链。

这套术法坚持三个原则:

  1. 少装:一个插件只解决一个问题;
  2. 不冲突:与现有 vimrc/插件和平共处;
  3. 可复制:命令行步骤可一键拷贝到任意机器。

细节亮点:

  • 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

后文结构预告(草案)

  1. YAML · 方案 A(最简可复制)coc.nvim + coc-yaml 安装与最小 coc-settings.json;首行 $schema 绑定;格式化与校验;常见坑位与修复。
  2. Lua · 离线保姆级lua-language-server 离线获取与软链;Ctrl-] 优先级(LSP → require 智能 → ctags);Ctrl-T 回退;tags 生成与增量更新。
  3. 待定

文中所有配置均提供“可复制块”,并附内网/离线替代路径。

1 个赞

频繁确认导致418,后续补齐