项目简介
一个时髦的 💅使用lua构建的 Neovim 的缓冲线(具有最少的选项卡集成)
这个插件试图模仿 GUI 文本编辑器/Doom Emacs 的美感。它的灵感来自使用centaur tabs的 DOOM Emacs 屏幕截图。
https://github.com/akinsho/bufferline.nvim
隐藏特定文件类型
不想在标签页中显示defx这个标签页,应该如何处理呢?
代码如下:
custom_filter = function(buf_number)
--如果是defx则隐藏
local finded, _ = string.find(vim.bo[buf_number].filetype, "defx")
if finded ~= nil then
return false
end
return true
end
分享我的配置
local status, bufferline = pcall(require, "bufferline")
if (not status) then
return
end
vim.opt.termguicolors = true
bufferline.setup {
options = {
--numbers = "ordinal" | "buffer_id" | "both" | function({ ordinal, id, lower, raise }): string,
--numbers = "both",
--- @deprecated, please specify numbers as a function to customize the styling
--number_style = "superscript" | "subscript" | "" | { "none", "subscript" }, -- buffer_id at index 1, ordinal at index 2
--number_style = "none",
close_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
right_mouse_command = "bdelete! %d", -- can be a string | function, see "Mouse actions"
left_mouse_command = "buffer %d", -- can be a string | function, see "Mouse actions"
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
-- NOTE: this plugin is designed with this icon in mind,
-- and so changing this is NOT recommended, this is intended
-- as an escape hatch for people who cannot bear it for whatever reason
indicator_icon = "",
buffer_close_icon = "",
modified_icon = "●",
close_icon = "",
left_trunc_marker = "",
right_trunc_marker = "",
--- name_formatter can be used to change the buffer's label in the bufferline.
--- Please note some names can/will break the
--- bufferline so use this at your discretion knowing that it has
--- some limitations that will *NOT* be fixed.
name_formatter = function(buf) -- buf contains a "name", "path" and "bufnr"
-- remove extension from markdown files for example
if buf.name:match("%.md") then
return vim.fn.fnamemodify(buf.name, ":t:r")
end
end,
max_name_length = 15,
max_prefix_length = 12, -- prefix used when a buffer is de-duplicated
tab_size = 15,
--diagnostics = false | "nvim_lsp" | "coc",
diagnostics = "nvim_lsp",
diagnostics_update_in_insert = false,
--[[diagnostics_indicator = function(count, level, diagnostics_dict, context)
return "(" .. count .. ")"
end,]]
-- rest of config ...
--- count is an integer representing total count of errors
--- level is a string "error" | "warning"
--- diagnostics_dict is a dictionary from error level ("error", "warning" or "info")to number of errors for each level.
--- this should return a string
--- Don't get too fancy as this function will be executed a lot
diagnostics_indicator = function(count, level, diagnostics_dict, context)
local icon = level:match("error") and " " or " "
return " " .. icon .. count
end,
-- NOTE: this will be called a lot so don't do any heavy processing here
custom_filter = function(buf_number)
--如果是defx则隐藏
local finded, _ = string.find(vim.bo[buf_number].filetype, "defx")
if finded ~= nil then
return false
end
return true
end,
--offsets = {{filetype = "NvimTree", text = "File Explorer" | function , text_align = "left" | "center" | "right"}},
--show_buffer_icons = true | false, -- disable filetype icons for buffers
show_buffer_icons = true, -- disable filetype icons for buffers
--show_buffer_close_icons = true | false,
show_buffer_close_icons = false,
--show_close_icon = true | false,
show_close_icon = false,
--show_tab_indicators = true | false,
show_tab_indicators = true,
persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
-- can also be a table containing 2 custom separators
-- [focused and unfocused]. eg: { '|', '|' }
--separator_style = "slant" | "thick" | "thin" | {"any", "any"},
separator_style = "thin",
--enforce_regular_tabs = false | true,
enforce_regular_tabs = false,
--always_show_bufferline = true | false,
always_show_bufferline = true
--[[sort_by = "id" | "extension" | "relative_directory" | "directory" | "tabs" | function(buffer_a, buffer_b)
-- add custom logic
return buffer_a.modified > buffer_b.modified
end]]
}
}
--按键映射
--nnoremap <silent> gb :BufferLinePick<CR>
vim.api.nvim_set_keymap("n", "gb", "<Cmd>BufferLinePick<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>1", "<Cmd>BufferLineGoToBuffer 1<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>2", "<Cmd>BufferLineGoToBuffer 2<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>3", "<Cmd>BufferLineGoToBuffer 3<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>4", "<Cmd>BufferLineGoToBuffer 4<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>5", "<Cmd>BufferLineGoToBuffer 5<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>6", "<Cmd>BufferLineGoToBuffer 6<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>7", "<Cmd>BufferLineGoToBuffer 7<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>8", "<Cmd>BufferLineGoToBuffer 8<CR>", {noremap = true, silent = true})
vim.api.nvim_set_keymap("n", "<leader>9", "<Cmd>BufferLineGoToBuffer 9<CR>", {noremap = true, silent = true})