文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

通过一个插件来了解Neovim的Winbar属性

2024-12-01 12:49

关注

通过:h winbar命令可以查看它的帮助文档。我们可以通过配置选项来配置winbar的显示内容。

配置的命令是vim.opt.winbar=配置内容。

代码上下文

winbar 可以显示任何内容,但是我们更多的时候是希望它显示一些有意义的内容,比如文件名和一些代码的函数名,属性信息等,此外,我们还可以显示文件的状态,比如文件是否被修改了。

函数api介绍

在代码中我们使用nvim-navic插件来帮助我们获取代码的上下文更详细的信息。

高亮配置

为了更好地显示窗口样式,我们可以通过修改winbar提供的高亮组样式来修改winbar的样式。

主要代码

local M = {}

local colors = require "config.colors"
local navic = require "nvim-navic"
local utils = require "utils"
local icons = require "config.icons"

vim.api.nvim_set_hl(0, "WinBarSeparator", { fg = colors.grey })
vim.api.nvim_set_hl(0, "WinBarFilename", { fg = colors.green, bg = colors.grey })
vim.api.nvim_set_hl(0, "WinBarContext", { fg = colors.green, bg = colors.grey })

M.winbar_filetype_exclude = {
"help",
"startify",
"dashboard",
"packer",
"neogitstatus",
"NvimTree",
"Trouble",
"alpha",
"lir",
"Outline",
"spectre_panel",
"toggleterm",
}

local excludes = function()
if vim.tbl_contains(M.winbar_filetype_exclude, vim.bo.filetype) then
vim.opt_local.winbar = nil
return true
end
return false
end

local function get_modified()
if utils.get_buf_option "mod" then
local mod = icons.git.Mod
return "%#WinBarFilename#" .. mod .. " " .. "%t" .. "%*"
end
return "%#WinBarFilename#" .. "%t" .. "%*"
end

local function get_location()
local location = navic.get_location()
if not utils.is_empty(location) then
return "%#WinBarContext#" .. " " .. icons.ui.ChevronRight .. " " .. location .. "%*"
end
return ""
end

function M.get_winbar()
if excludes() then
return ""
end
if navic.is_available() then
return "%#WinBarSeparator#"
.. "%="
.. ""
.. "%*"
.. get_modified()
.. get_location()
.. "%#WinBarSeparator#"
.. ""
.. "%*"
else
return "%#WinBarSeparator#" .. "%=" .. "" .. "%*" .. get_modified() .. "%#WinBarSeparator#" .. "" .. "%*"
end
end

return M

总结

neovim的插件目前几乎都是用lua进行编写的,lua使用起来不仅效率高,而且配置起来也非常的方便,此外,neovim也在不断地完善自己的api,用户开发起来变得非常轻松。

来源:程序那些事儿内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯