Custom Statusline
Definição curta: Tutorial para criar uma statusline customizada no Neovim usando Lua e/ou o plugin Lualine.
Antes de começar
- Neovim v0.11 ou mais recente instalado — confira com
nvim --version - Um
init.luaque já carrega, ainda que vazio
O que você vai aprender
- Explicar Statusline nativa com suas palavras
- Explicar Lualine setup com suas palavras
- Explicar Componentes customizados com suas palavras
- Localizar o assunto desta página no
:helpdo seu próprio Neovim
O que é
A statusline exibe informações como modo atual, arquivo, linha,coluna, LSP status, git branch e mais. Pode ser customizada via vim.opt.statusline ou com plugins como Lualine.
Índice de sub-tópicos
Statusline nativa
vim.opt.statusline = "%f %m %r %= %l:%c %p%%"| Código | Conteúdo |
|---|---|
%f | Nome do arquivo |
%m | Modificado (modified) |
%r | Somente leitura (readonly) |
%= | Separador |
%l | Linha |
%c | Coluna |
%p%% | Percentual |
Lualine setup
-- plugins/lualine.lua
return {
"nvim-lualine/lualine.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
}-- setup/lualine.lua
require("lualine").setup({
options = {
theme = "dracula",
section_separators = "",
component_separators = "",
},
sections = {
lualine_a = { "mode" },
lualine_b = { "branch", "diff" },
lualine_c = { "filename" },
lualine_x = { "encoding", "fileformat", "filetype" },
lualine_y = { "progress" },
lualine_z = { "location" },
},
})Componentes customizados
-- Componente LSP status
local function lsp_status()
local clients = vim.lsp.get_active_clients()
if #clients > 0 then
return " LSP: " .. clients[1].name
end
return ""
end
require("lualine").setup({
sections = {
lualine_c = {
{ "filename" },
{ lsp_status, color = { fg = "#98c379" } },
},
},
})Exemplo completo
-- setup/lualine.lua
require("lualine").setup({
options = {
theme = "catppuccin",
icons_enabled = true,
component_separators = "|",
section_separators = "",
},
sections = {
lualine_a = { { "mode", fmt = function(str) return str:sub(1,1) end } },
lualine_b = { "branch" },
lualine_c = {
"filename",
"%=", -- separator
{ "diagnostics", symbols = { error = "E:", warn = "W:" } },
},
lualine_x = {
{ "filetype", icon_only = true },
"encoding",
},
lualine_y = { "progress" },
lualine_z = { "location" },
},
})Você aprendeu
- Statusline nativa
- Lualine setup
- Componentes customizados
- Exemplo completo
Perguntas para reflexão
- O que Statusline nativa resolve, e o que se perde sem isso?
- O que Lualine setup resolve, e o que se perde sem isso?
- O que Componentes customizados resolve, e o que se perde sem isso?
- Qual parte desta página você conseguiria reproduzir sem consultar, direto no editor?
Artigos relacionados
Veja também
- Lua API — API Lua
- Configuração LSP — Status LSP
Referências
- Lualine — Repositório oficial
- vim-statusline — Documentação oficial