插件现在使用 虚拟文本模式,这意味着:
- ✅ 分隔线通过 Neovim 的虚拟文本显示
- ✅ 不会修改实际的 Dockerfile 内容
- ✅ 不会导致 Dockerfile 语法错误
- ✅ 分隔线只在编辑器中可见,保存文件时不会包含分隔符
# 打开测试 Dockerfile
nvim test.Dockerfile在 Neovim 中执行以下命令:
:DockerfileEnhance您应该看到:
- 通知消息:"Dockerfile 已增强,显示 X 个虚拟分隔符"
- 在多个 FROM 指令之间出现虚拟分隔线
- 文件内容保持不变,没有语法错误
:DockerfileShowInfo " 显示所有 FROM 指令信息
:DockerfileHideSeparators " 隐藏虚拟分隔线
:DockerfileToggleSeparators " 切换虚拟分隔线显示插件默认启用自动模式。当您打开 Dockerfile 文件时,插件会自动检测并显示虚拟分隔线。
# 打开一个多阶段构建的 Dockerfile
nvim examples/multi-stage.Dockerfile插件应该自动在多个 FROM 指令之间显示虚拟分隔线。
- 不会修改 Dockerfile 的实际内容
- 不会导致 Docker 构建错误
- 保存文件时不会包含分隔符字符
- 分隔线只在编辑器中可见
- 提高多阶段构建的可读性
- 可以随时隐藏或显示
- 当您编辑 Dockerfile 时,分隔线会自动更新
- 支持实时检测 FROM 指令的变化
-
检查插件是否正确加载:
:lua print(vim.fn.exists(":DockerfileEnhance"))
应该返回
2(命令存在) -
检查文件类型:
:set filetype?
应该显示
dockerfile -
手动加载插件:
:lua require('dockerfile-enhance').setup()
-
检查是否有多个 FROM 指令:
:DockerfileShowInfo
-
检查虚拟文本设置:
:lua require('dockerfile-enhance').setup({enable_virtual_text = true})
-
手动刷新虚拟分隔线:
:lua require('dockerfile-enhance').refresh_virtual_separators()
-
检查 Neovim 版本: 虚拟文本需要 Neovim 0.6.0 或更高版本
require('dockerfile-enhance').setup({
separator_char = "─", -- 分隔符字符
separator_length = 80, -- 分隔符长度
highlight_group = "Comment", -- 高亮组
auto_enhance = true, -- 自动增强
enable_highlights = true, -- 启用高亮
enable_virtual_text = true, -- 启用虚拟文本(推荐)
virtual_highlight_group = "Comment", -- 虚拟文本高亮组
})require('dockerfile-enhance').setup({
separator_char = "=", -- 使用等号作为分隔符
separator_length = 60, -- 分隔符长度
virtual_highlight_group = "Special", -- 使用特殊高亮组
})require('dockerfile-enhance').setup({
enable_virtual_text = false
})FROM node:18-alpine AS base
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
FROM base AS development
RUN npm ci
COPY . .
CMD ["npm", "run", "dev"]
FROM base AS production
COPY . .
RUN npm run build
CMD ["npm", "start"]FROM node:18-alpine AS base
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
────────────────────────────────────────────────────────────────────────────────
FROM base AS development
RUN npm ci
COPY . .
CMD ["npm", "run", "dev"]
────────────────────────────────────────────────────────────────────────────────
FROM base AS production
COPY . .
RUN npm run build
CMD ["npm", "start"]
注意:分隔线只在编辑器中显示,保存文件时仍然是原始的 Dockerfile 内容。
如果遇到问题,可以运行诊断脚本:
nvim -l debug_plugin.lua或者运行虚拟文本测试:
nvim -l test_virtual.lua插件使用 Neovim 的 extmark API 来显示虚拟文本:
- 虚拟文本不会影响文件的实际内容
- 分隔线显示在 FROM 指令行的末尾
- 支持自定义高亮和样式
- 实时响应文件内容变化