github-nvim-theme

github-nvim-theme

Neovim专用GitHub风格主题插件

github-nvim-theme为Neovim提供多种GitHub风格配色方案,包括暗色、亮色和色盲友好版本。该插件支持最新Neovim特性,如TreeSitter和LSP,并遵循GitHub的VSCode主题设计。它支持多种插件和状态栏,具有高度可配置性,支持模板覆盖、编译和实时重载。这个主题插件为Neovim用户带来GitHub风格的视觉体验和性能优化。

GitHubNeovim主题配色方案自定义Github开源项目

github-nvim-主题

Neovim 测试

通知

[!警告] 如果您自定义或配置颜色,或者升级配色方案后发现外观没有变化,请运行:GithubThemeCompile命令来编译配色方案。我们正在积极解决这个问题,感谢您的耐心等待。

赞助商致谢

订阅此讨论 或查看:h github-theme-changelog以获取有关重大变更和弃用的更新。

  • 2023-12-02:重新实现了*_default配色方案,之前在changelog-23042023中被弃用
  • 2023-05-14:本主题进行了重大重构,对Neovim支持和代码库进行了更改,深受nightfox.nvim的启发。感谢EdenEast。对于较旧的Neovim版本,请使用0.0.x分支。
  • 2022-08-03:终端和其他主题已移至**github-theme-contrib** Git仓库,相关代码已从本仓库中移除。

支持的配色方案和比较

github-nvim-themegithub-vscode-themeGithub Web UIPrimer
github_darkGithub Dark--
github_lightGithub Light--
github_dark_dimmedGithub Dark DimmedDark dimmeddark_dimmed
github_dark_defaultGithub Dark DefaultDark defaultdark
github_light_defaultGithub Light DefaultLight defaultlight
github_dark_high_contrastGithub Dark High ContrastDark high contrastdark_high_contrast
github_light_high_contrastGithub Light High ContrastLight high contrastlight_high_contrast
github_dark_colorblindGithub Dark Colorblind (Beta)Dark Protanopia & Deuteranopiadark_colorblind
github_light_colorblindGithub Light Colorblind (Beta)Light Protanopia & Deuteranopialight_colorblind
github_dark_tritanopia-Dark Tritanopiadark_tritanopia
github_light_tritanopia-Light Tritanopialight_tritanopia

特性

  • 支持最新的Neovim>=0.5特性,如Treesitter和LSP
  • 类似于GitHub的VSCode主题,遵循primer设计指南
  • 包含GitHub的色盲主题
  • 支持多个插件状态栏
    • 许多其他插件也应该"开箱即用"!
  • 最小化的非活动Vim默认状态栏
  • Vim终端颜色
  • 侧边栏类窗口的较深背景
  • 高度可配置,支持模板覆盖
  • 最优雅的lualine主题
  • 编译用户配置以加快启动时间
  • 导出颜色库实用工具
  • 交互式实时配置重新加载

要求

  • Neovim >= 0.8.0(对于旧版本请使用0.0.x分支)
  • 真彩色支持
  • 下划线终端支持(可选)

[!注意] 在macOS上,默认终端(即Terminal.app)不支持真彩色24位RGB颜色。请使用Iterm2或其他支持真彩色的终端。

安装

使用您喜欢的包管理器安装主题:

使用vim-plug安装:

Plug 'projekt0n/github-nvim-theme'

或使用dein

call dein#add('projekt0n/github-nvim-theme')

或使用minpac

call minpac#add('projekt0n/github-nvim-theme')

或使用Packer.nvim

在您的init.luaplugins.lua中添加以下内容

-- 无配置安装 use ({ 'projekt0n/github-nvim-theme' }) -- 或带配置安装 use({ 'projekt0n/github-nvim-theme', config = function() require('github-theme').setup({ -- ... }) vim.cmd('colorscheme github_dark') end })

或使用lazy.nvim

在您的init.luaplugins.lua中添加以下内容

-- 无配置安装 { 'projekt0n/github-nvim-theme' } -- 或使用配置 { 'projekt0n/github-nvim-theme', lazy = false, -- 确保在启动时加载此插件,如果它是您的主要配色方案 priority = 1000, -- 确保在所有其他启动插件之前加载此插件 config = function() require('github-theme').setup({ -- ... }) vim.cmd('colorscheme github_dark') end, }

使用方法

只需使用内置命令 :colorscheme 设置配色方案

colorscheme github_dark
vim.cmd('colorscheme github_dark')

截图

Github 深色

vim.cmd('colorscheme github_dark')

github_dark

Github 深色默认

vim.cmd('colorscheme github_dark_default')

github_dark_default

Github 深色暗淡

vim.cmd('colorscheme github_dark_dimmed')

github_dark_dimmed

Github 深色高对比度

vim.cmd('colorscheme github_dark_high_contrast')

github_dark_high_contrast

Github 深色色盲模式(测试版)

vim.cmd('colorscheme github_dark_colorblind')

github_dark_colorblind

Github 深色蓝黄色盲模式(测试版)

vim.cmd('colorscheme github_dark_tritanopia')

github_dark_tritanopia

Github 浅色

vim.cmd('colorscheme github_light')

github_light

Github 浅色默认

vim.cmd('colorscheme github_light_default')

github_light_default

Github 浅色高对比度

vim.cmd('colorscheme github_light_high_contrast')

github_light_high_contrast

Github 浅色色盲模式(测试版)

vim.cmd('colorscheme github_light_colorblind')

github_light_colorblind

Github 浅色蓝黄色盲模式(测试版)

vim.cmd('colorscheme github_light_tritanopia')

github_light_tritanopia

配置

如果您不想更改默认选项和设置,则无需调用 setup

-- 默认选项 require('github-theme').setup({ options = { -- 编译文件的目标位置 compile_path = vim.fn.stdpath('cache') .. '/github-theme', compile_file_suffix = '_compiled', -- 编译文件后缀 hide_end_of_buffer = true, -- 隐藏缓冲区末尾的'~'字符以获得更整洁的外观 hide_nc_statusline = true, -- 覆盖非活动状态栏的下划线样式 transparent = false, -- 禁用设置背景(使neovim的背景透明) terminal_colors = true, -- 设置`:terminal`中使用的终端颜色(vim.g.terminal_color_*) dim_inactive = false, -- 非聚焦窗格设置为替代背景 module_default = true, -- 模块的默认启用值 styles = { -- 应用于不同语法组的样式 comments = 'NONE', -- 值可以是任何有效的attr-list值 `:help attr-list` functions = 'NONE', keywords = 'NONE', variables = 'NONE', conditionals = 'NONE', constants = 'NONE', numbers = 'NONE', operators = 'NONE', strings = 'NONE', types = 'NONE', }, inverse = { -- 不同类型的反向高亮 match_paren = false, visual = false, search = false, }, darken = { -- 使浮动窗口和类侧边栏窗口变暗 floats = true, sidebars = { enable = true, list = {}, -- 对特定窗口应用深色背景 }, }, modules = { -- 各种插件和附加选项列表 -- ... }, }, palettes = {}, specs = {}, groups = {}, }) -- 必须在加载之前调用setup vim.cmd('colorscheme github_dark')

如果你想更改上述任何默认选项,只需指定你想更改的选项。未指定的选项将使用其默认值。例如,如果你只想更改某些语法项的样式:

require('github-theme').setup({ options = { styles = { comments = 'italic', keywords = 'bold', types = 'italic,bold', } } })

要查看Github Theme配置设置的详细说明,请参考内置帮助:help github-nvim-themeUsage

模块

Github Theme的模块存储各种插件和其他neovim模块的配置信息。要启用模块, 可以将模块设置为true,或者如果模块有额外的配置信息,则将enable设置为true

默认情况下,模块将被启用。要更改此行为,请将options.module_default更改为false

要查看模块列表,请参阅Usage:help以获取更多信息。

自定义调色板和组

你可以更改github-theme的颜色palette和高亮group。这里是一个简短的例子:

-- 调色板是配色方案的基本颜色定义。 -- 你可以为github-theme定义的每个配色方案覆盖这些调色板。 local palettes = { -- 在`all`下定义的所有内容将应用于每种样式。 all = { -- 每个调色板定义这些颜色: -- black, gray, blue, green, magenta, pink, red, white, yellow, cyan -- -- 这些颜色有2种色调:base和bright -- 传递字符串设置base red = '#ff0000', }, github_dark = { -- 定义多个色调是通过传递一个表来完成的 red = { base = '#8e1519', bright = '#ee0000', }, }, github_dark_dimmed = { -- 调色板还定义了以下内容: -- bg0, bg1, bg2, bg3, bg4, fg0, fg1, fg2, fg3, sel0, sel1, comment -- -- 这些是主题使用的不同前景和背景色调。 -- 基本的bg和fg是1,0通常是深色替代。其他是 -- 逐渐变亮的版本。 bg1 = '#444c56', -- sel是不同类型的选择颜色。 sel0 = '#adbac7', -- 弹出背景,可视选择背景 sel1 = '#22272e', -- 弹出选择背景,搜索背景 -- comment是注释颜色的定义。 comment = '#636e7b', }, } -- Spec's(规格)是将调色板映射到逻辑组的映射,这些逻辑组将被 -- 组使用。规格映射的一些组示例包括: -- - 语法组(函数、类型、关键字...) -- - 诊断组(错误、警告、信息、提示) -- - git组(添加、删除、更改) -- -- 你可以像覆盖调色板一样覆盖这些 local specs = { -- 与调色板一样,`all`下定义的值将应用于每种样式。 all = { syntax = { -- 规格允许你使用颜色或模板定义值。如果字符串不 -- 以`#`开头,该字符串将用作调色板表的路径。仅定义 -- 一种颜色使用该颜色的base版本。 keyword = 'magenta', -- 添加`.bright`将改变值 conditional = 'magenta.bright', number = 'orange', }, git = { -- 也可以使用颜色定义 changed = '#ffa261', }, }, github_dark = { syntax = { -- 与调色板一样,特定样式的值将优先于`all`的值。 operator = 'orange', }, }, } -- 组是高亮组定义。此表的键是将被 -- 覆盖的高亮组的名称。值是一个包含以下键的表: -- - fg, bg, style, sp, link, -- -- 就像`spec`一样,组支持模板。这次模板基于spec对象。 local groups = { -- 与规格和调色板一样,`all`下定义的值将应用于每种样式。 all = { -- 如果定义了`link`,它将覆盖任何其他定义的值 Whitespace = { link = 'Comment' },

-- 模板使用规格。规格中包含可访问的调色板字段 IncSearch = { bg = 'palette.cyan' }, }, github_dark = { -- 与规格和调色板一样,特定样式的值将优先于'all'中的值使用。 PmenuSel = { bg = '#73daca', fg = 'bg0' }, }, }

require('github-theme').setup({ palettes = palettes, specs = specs, groups = groups })

-- 必须在加载前调用setup vim.cmd('colorscheme github_dark')


要查找为vim定义的语法高亮组列表,请使用帮助`:help group-name`和`:help nvim-treesitter-highlights`(用于treesitter)。如果你还想了解GitHub Theme如何定义这些高亮组,可以查看[syntax.lua]获取vim语法信息,[treesitter.lua]获取treesitter信息。这些文件列出了所有高亮组,并附有描述注释。另一个值得注意的文件是[editor.lua],它负责vim外观的高亮组(背景、光标行、标签栏等)。

要获取更多信息,请查看[Usage](https://github.com/projekt0n/github-nvim-theme/blob/main/./Usage.md#configuration)或帮助文件`:help github-nvim-theme`以获取更详细的信息。

[editor.lua]: https://github.com/projekt0n/github-nvim-theme/blob/main/lua/github-theme/group/editor.lua
[syntax.lua]: https://github.com/projekt0n/github-nvim-theme/blob/main/lua/github-theme/group/syntax.lua
[treesitter.lua]: https://github.com/projekt0n/github-nvim-theme/blob/main/lua/github-theme/group/modules/treesitter.lua

### 自定义模板值

GitHub Theme的`palettes`和`specs`可以用你自己的值进行扩展。这对于想要区分用于多个组定义的规格值的用户很有用。通过一个例子可以更好地理解这一点。

`bg0`用作深色替代背景色。它在多个区域使用(非当前文件、状态栏、普通浮动窗口等)。如果你想让非活动颜色与浮动窗口/状态栏颜色不同,可以在`specs`表中定义自己的值。

```lua
require('github-theme').setup({
  palettes = {
    -- 带有黑色背景的自定义duskfox
    github_dark = {
      bg1 = '#000000', -- 黑色背景
      bg0 = '#1d1d2b', -- 替代背景(浮动窗口、状态栏等)
      bg3 = '#121820', -- 比原版暗55%
      sel0 = '#131b24', -- 比原版暗55%
    },
  },
  specs = {
    all = {
      inactive = 'bg0', -- 其他样式的默认值
    },
    github_dark_dimmed = {
      inactive = '#090909', -- 略微比黑色背景亮一些
    },
  },
  groups = {
    all = {
      NormalNC = { fg = 'fg1', bg = 'inactive' }, -- 非当前窗口
    },
  },
})

API

GitHub Theme提供了一些API和实用类,让你可以获取GitHub Theme的数据。

调色板

你可以获取每个配色方案使用的调色板:

-- 返回一个包含每个配色方案及其关联调色板的表 local palettes = require('github-theme.palette').load() -- 返回指定配色方案的调色板 local palette = require('github-theme.palette').load('github_dark_dimmed') print(vim.inspect(palette.red)) -- { -- base = '#f47067', -- bright = '#ff938a' -- }

有关调色板的更多信息,请参阅Usage

规格

你可以获取每个配色方案使用的规格:

-- 返回一个包含每个配色方案及其关联规格的表 local specs = require('github-theme.spec').load() -- 返回指定配色方案的规格 local spec = require('github-theme.spec').load('github_light') print(vim.inspect(spec.git)) -- { -- add = '#1a7f37', -- changed = '#9a6700', -- conflict = '#bc4c00', -- ignored = '#6e7781', -- removed = '#d1242f' -- }

有关规格的更多信息,请参阅Usage

颜色库

GitHub Theme内部使用颜色库来操作颜色。你也可以使用这个库。

local palette = require('github-theme.palette').load('github_dark') local Color = require('github-theme.lib.color') local bg = Color.from_hex(palette.canvas.default) local red = Color.from_hex('#ff0000') -- 将bg与红色混合。混合因子从0到1, -- 0表示全bg,1表示全红 local red_bg = bg:blend(red, 0.2) print(red_bg:to_css()) -- '#592b31' -- 通过将颜色的HSV值增加10来使bg变亮 local alt_bg = bg:brighten(10) print(vim.inspect(alt_bg:to_hsv())) -- { -- hue = 212.30769230769, -- saturation = 21.311475409836, -- value = 33.921568627451 -- }

有很多有用的函数可以在不同的色彩空间中操作和处理颜色。

有关Color的更多信息,请参阅Usage

编译

GitHub Theme是一个高度可定制和可配置的配色方案。然而,这会带来复杂性和执行时间的代价。

GitHub Theme预先计算你的配置结果,并将Lua字节码保存在缓存中,以便下次加载时使用。 这显著提高了GitHub Theme的执行速度。对配置的更改将自动重新计算和缓存。

默认情况下,GitHub Theme将编译结果写入系统的cache目录。在Unix系统上,这是 $XDG_CACHE_HOME/nvim/github-theme,在Windows上,这是%localappdata%\\Temp\\nvim\\github-theme

GitHub Theme提供了一些函数来处理GitHub Theme编译器。

:GithubThemeCompile " 手动调用GitHub Theme编译器创建/更新编译文件
require('github-theme').compile() -- Lua API版本

交互式

Github 主题使得修改配置并查看结果变得容易。为此,Github 主题提供了以下命令:

GithubThemeInteractive

该命令会为当前缓冲区添加一个在 BufferWritePost 事件上执行的自动命令。这个自动命令会清除 Github 主题的内部状态,并从新保存的文件中重新加载配置。然后它会重置配色方案。

支持的插件

状态栏

Lualine

Lualine 通过检查 vim.g.colors_name 的值(使用 :colorscheme 命令时设置)来确定要加载的主题。在调用 setup 之前设置你的配色方案。

vim.cmd('colorscheme github_dark') require('lualine').setup({ ... })

Airline

使用 vim 命令 :AirlineThemes 设置你的 airline 配色方案。

语法高亮组

本节将帮助你确定某段语法应用了哪个高亮组。这些方法可以显示当前光标位置(光标下)正在使用的高亮组。

[!提示] 在 Neovim v0.9.0 及更高版本中,你可以使用内置命令 :Inspect 或 Lua 函数 vim.show_pos()

Treesitter 高亮

如果 treesitter 是相关语言的高亮方法,你可以使用命令::TSHighlightCapturesUnderCursor。这个命令来自 treesitter playground 插件。确保你已安装此插件以及 nvim-treesitter

Tmux 中正确显示 undercurls

要让 undercurls 显示并带有颜色,请在你的 Tmux 配置文件中添加以下内容:

# Undercurl set -g default-terminal '${TERM}' set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl 支持 set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # 下划线颜色 - 需要 tmux-3.0

贡献

查看 CONTRIBUTING.md

版权

本项目基于 MIT 许可证发布。 更多信息请查看 LICENSE 或访问 opensource.org

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多