开源软件名称(OpenSource Name):nvim-lualine/lualine.nvim开源软件地址(OpenSource Url):https://github.com/nvim-lualine/lualine.nvim开源编程语言(OpenSource Language):Lua 98.3%开源软件介绍(OpenSource Introduction):lualine.nvimA blazing fast and easy to configure Neovim statusline written in Lua.
ContributingFeel free to create an issue/PR if you want to see anything else implemented. If you have some question or need help with configuration, start a discussion. Please read CONTRIBUTING.md before opening a PR. You can also help with documentation in the wiki. ScreenshotsHere is a preview of what lualine can look like. Screenshots of all available themes are listed in THEMES.md For those who want to break the norms, you can create custom looks for lualine. Example : Performance compared to other pluginsUnlike other statusline plugins, lualine loads only the components you specify, and nothing else. Startup time performance measured with an amazing plugin dstein64/vim-startuptime Times are measured with a clean
Last Updated On: 18-04-2022 Installationvim-plugPlug 'nvim-lualine/lualine.nvim'
" If you want to have icons in your statusline choose one of these
Plug 'kyazdani42/nvim-web-devicons' packer.nvimuse {
'nvim-lualine/lualine.nvim',
requires = { 'kyazdani42/nvim-web-devicons', opt = true }
} You'll also need to have a patched font if you want icons. Usage and customizationLualine has sections as shown below.
Each sections holds its components e.g. Vim's current mode. Configuring lualine in init.vimAll the examples below are in lua. You can use the same examples
in lua << END
require('lualine').setup()
END For more information, check out Default configurationrequire('lualine').setup {
options = {
icons_enabled = true,
theme = 'auto',
component_separators = { left = '', right = ''},
section_separators = { left = '', right = ''},
disabled_filetypes = {
statusline = {},
winbar = {},
},
ignore_focus = {},
always_divide_middle = true,
globalstatus = false,
refresh = {
statusline = 1000,
tabline = 1000,
winbar = 1000,
}
},
sections = {
lualine_a = {'mode'},
lualine_b = {'branch', 'diff', 'diagnostics'},
lualine_c = {'filename'},
lualine_x = {'encoding', 'fileformat', 'filetype'},
lualine_y = {'progress'},
lualine_z = {'location'}
},
inactive_sections = {
lualine_a = {},
lualine_b = {},
lualine_c = {'filename'},
lualine_x = {'location'},
lualine_y = {},
lualine_z = {}
},
tabline = {},
winbar = {},
inactive_winbar = {},
extensions = {}
} If you want to get your current lualine config, you can do so with: require('lualine').get_config()
Starting lualinerequire('lualine').setup() Setting a themeoptions = { theme = 'gruvbox' } All available themes are listed in THEMES.md. Please create a PR if you managed to port a popular theme before us, here is how to do it. Customizing themeslocal custom_gruvbox = require'lualine.themes.gruvbox'
-- Change the background of lualine_c section for normal mode
custom_gruvbox.normal.c.bg = '#112233'
require('lualine').setup {
options = { theme = custom_gruvbox },
...
} Theme structure is available here. Separatorslualine defines two kinds of separators:
Note: if viewing this README in a browser, chances are the characters below will not be visible. options = {
section_separators = { left = '', right = '' },
component_separators = { left = '', right = '' }
} Here, left refers to the left-most sections (a, b, c), and right refers to the right-most sections (x, y, z). Disabling separatorsoptions = { section_separators = '', component_separators = '' } Changing components in lualine sectionssections = {lualine_a = {'mode'}} Available components
Custom componentsLua functions as lualine componentlocal function hello()
return [[hello world]]
end
sections = { lualine_a = { hello } } Vim functions as lualine componentsections = { lualine_a = {'FugitiveHead'} } Vim's statusline items as lualine componentsections = { lualine_c = {'%=', '%t%m', '%3p'} } Vim variables as lualine componentVariables from See sections = { lualine_a = { 'g:coc_status', 'bo:filetype' } } Lua expressions as lualine componentYou can use any valid lua expression as a component including:
sections = { lualine_c = { "os.date('%a')", 'data', "require'lsp-status'.status()" } }
Component optionsComponent options can change the way a component behave. There are two kinds of options:
Global options can be used as local options (can be applied to specific components) but you cannot use local options as global. Global option used locally overwrites the global, for example: require('lualine').setup {
options = { fmt = string.lower },
sections = { lualine_a = {
{ 'mode', fmt = function(str) return str:sub(1,1) end } },
lualine_b = {'branch'} }
}
Available optionsGlobal optionsThese are Values set here are treated as default for other options that work in component level. For example even though options = {
theme = 'auto', -- lualine theme
component_separators = { left = '', right = '' },
section_separators = { left = '', right = '' },
disabled_filetypes = { -- Filetypes to disable lualine for.
statusline = {}, -- only ignores the ft for statusline.
winbar = {}, -- only ignores the ft for winbar.
},
ignore_focus = {}, -- If current filetype is in this list it'll
-- always be drawn as inactive statusline
-- and the last window will be drawn as active statusline.
-- for example if you don't want statusline of
-- your file tree / sidebar window to have active
-- statusline you can add their filetypes here.
always_divide_middle = true, -- When set to true, left sections i.e. 'a','b' and 'c'
-- can't take over the entire statusline even
-- if neither of 'x', 'y' or 'z' are present.
globalstatus = false, -- enable global statusline (have a single statusline
-- at bottom of neovim instead of one for every window).
-- This feature is only available in neovim 0.7 and higher.
refresh = { -- sets how often lualine should refreash it's contents (in ms)
statusline = 1000, -- The refresh option sets minimum time that lualine tries
tabline = 1000, -- to maintain between refresh. It's not guarantied if situation
winbar = 1000 -- arises that lualine needs to refresh itself before this time
-- it'll do it.
-- Also you can force lualine's refresh by calling refresh function
-- like require('lualine').refresh()
}
} General component optionsThese are options that control behavior at component level and are available for all components. sections = {
lualine_a = {
{
'mode',
icons_enabled = true, -- Enables the display of icons alongside the component.
-- Defines the icon to be displayed in front of the component.
-- Can be string|table
-- As table it must contain the icon as first entry and can use
-- color option to custom color the icon. Example:
-- {'branch', icon = ''} / {'branch', icon = {'', color={fg='green'}}}
-- icon position can also be set to the right side from table. Example:
-- {'branch', icon = {'', align='right', color={fg='green'}}}
icon = nil,
separator = nil, -- Determines what separator to use for the component.
-- Note:
-- When a string is provided it's treated as component_separator.
-- When a table is provided it's treated as section_separator.
-- Passing an empty string disables the separator.
--
-- These options can be used to set colored separators
-- around a component.
--
-- The options need to be set as such:
-- separator = { left = '', right = ''}
--
-- Where left will be placed on left side of component,
-- and right will be placed on its right.
--
cond = nil, -- Condition function, the component is loaded when the function returns `true`.
-- Defines a custom color for the component:
--
-- 'highlight_group_name' | { fg = '#rrggbb'|cterm_value(0-255)|'color_name(red)', bg= '#rrggbb', gui='style' } | function
-- Note:
-- '|' is synonymous with 'or', meaning a different acceptable format for that placeholder.
-- color function has to return one of other color types ('highlight_group_name' | { fg = '#rrggbb'|cterm_value(0-255)|'color_name(red)', bg= '#rrggbb', gui='style' })
-- color functions can be used to have different colors based on state as shown below.
--
-- Examples:
-- color = { fg = '#ffaa88', bg = 'grey', gui='italic,bold' },
-- color = { fg = 204 } -- When fg/bg are omitted, they default to the your theme's fg/bg.
-- color = 'WarningMsg' -- Highlight groups can also be used.
-- color = function(section)
-- return { fg = vim.bo.modified and '#aa3355' or '#33aa88' }
-- end,
color = nil, -- The default is your theme's color for that section and mode.
-- Specify what type a component is, if omitted, lualine will guess it for you.
--
-- Available types are:
-- [format: type_name(example)], mod(branch/filename),
-- stl(%f/%m), var(g:coc_status/bo:modifiable),
-- lua_expr(lua expressions), vim_fun(viml function name)
--
-- Note:
-- lua_expr is short for lua-expression and vim_fun is short for vim-function.
type = nil,
padding = 1, -- Adds padding to the left and right of components.
-- Padding can be specified to left or right independently, e.g.:
-- padding = { left = left_padding, right = right_padding }
fmt = nil, -- Format function, formats the component's output.
on_click = nil, -- takes a function that is called when component is clicked with mouse.
-- the function receives several arguments
-- - number of clicks incase of multiple clicks
-- - mouse button used (l(left)/r(right)/m(middle)/...)
-- - modifiers pressed (s(shift)/c(ctrl)/a(alt)/m(meta)...)
}
}
} Component specific optionsThese are options that are available on specific components.
For example you have option on buffers component optionssections = {
lualine_a = {
{
'buffers',
show_filename_only = true, -- Shows shortened relative path when set to false.
hide_filename_extension =
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论