Personalizando a Aparência - Tudo sobre Neovim com Lua

Adicionamos Barra de Status, Linhas de Indentação, Exibição de Cores além de alguns plugins extras e configuramos do zero.


Personalizando a Aparência - Tudo sobre Neovim com Lua

Nesse artigo vamos instalar 6 novos plugins incluindo:

  • Barra de status
  • Ícones
  • Linhas de indentação
  • Verificação de cores
  • Autopairs versão Neovim escrito em Lua que não cria par quando há caractere na frente.
  • Troca de caracteres

Se você não viu os epsisódios anteriores, segue os links:


Instalando ícones

Antes de qualquer coisa certifique-se que você possui os ícones Terminal Root instalados, o endereço do repositório é: https://github.com/terroo/fonts, use a branch fonts.

Após possuir as fontes vamos instalar os ícones para usar quando instalarmos a Barra de status. Usaremos o Nvim-web-devicons.

Para isso basta adicionar ao seu lua/plugins/plugins.lua a linha abaixo:

use 'kyazdani42/nvim-web-devicons'

Em seguida basta rodar: :PackerInstall

Agora crie um arquivo dentro do diretório e nome: ~/.config/nvim/lua/plugins/utils.lua e insira esse conteúdo:

-- Para nvim-web-devicons
require'nvim-web-devicons'.get_icons()

Ainda não veremos o efeito disso, somente quando instalar o plugin do próximo passo!


Instalando Barra de status

A Barra de status que eu uso e acho muito bacana é a staline.nvim ela é bem leve e escrita em Lua, além de possuir vários temas bacanas. Para instalar, já sabemos em plugins.lua:

use 'tamton-aquib/staline.nvim'

E em seguida: :PackerInstall .

Vamos utilizar aquele conceito de função que vimos, então adicione isso ao final do arquivo settings.lua:

vim.cmd([[ let extension = expand('%:e') ]])

Eu uso essa variável para um código que eu criei para minha Barra de status.

Agora vamos novamente para o arquivo utils.lua e vamos adicionar esse código que é de acordo com o tema dela que eu uso:

Note que estou usando require("lfs"), eu uso ela pois é mais fácil de verificar se um diretório existe, ela é o Lua File System , um módulo que requer instalação se você não possuir, use o gerenciador de pacotes do seu sistema ou LuaRocks para instalá-la, mas antes tente, se não houver nenhuma crítica é porque já está instalada.

-- Para Barra de status
require("lfs")

local function dot_git_exists()
  local path = "./.git"
  if (lfs.attributes(path, "mode") == "directory") then
    return true
  end
  return false
end

if dot_git_exists() then
  branch = '-branch'
else 
  branch = '-📁'
  --branch = '-  '
end

local function get_var(my_var_name)
  return vim.api.nvim_get_var(my_var_name)
end

extension = get_var("extension")

if extension == "cpp" or extension == "hpp" or extension == "h" then
  this_lsp = '-lsp_name'
else
  this_lsp = '-file_size'
end


require('staline').setup{
  sections = {
    left = {
      ' ', 'right_sep_double', '-mode', 'left_sep_double', ' ',
      'right_sep', '-file_name', 'left_sep', ' ',
      'right_sep_double', branch, 'left_sep_double', ' ',
    },
    mid  = {'-lsp'},
    right= {
      'right_sep', '-cool_symbol', 'left_sep', ' ',
      'right_sep', '- ', this_lsp, '- ', 'left_sep',
      'right_sep_double', '-line_column', 'left_sep_double', ' ',
    }
  },

  defaults={
    fg = "#f7f7f7",
    cool_symbol = "  ",
    left_separator = "",
    right_separator = "",
    line_column = "%l:%c [%L]",
    true_colors = false,
    line_column = "[%l:%c] 並%p%% ",
    stab_start  = "",
    stab_end    = ""
    --font_active = "bold"
  },
  mode_colors = {
    n  = "#921F81",
    i  = "#006A6B",
    ic = "#E4BF7B",
    c  = "#2a6099",
    v  = "#D71B39"
  }
}

As cores estão em mode_colors, altere paras as cores que você deseja(n para o modo Normal, i para Inserção e assim por diante).

Se quiser que apareça o ícone da sua distro, baixe esse arquivo rode ele com lua systems-icons.lua e veja se o ícone da sua distro/sistema aparece no terminal. Copie e substitua o ícone do Gentoo(cool_symbol) pelo o que você deseja!

Outra coisa é que eu só uso LSP para o C++, no entanto mais à frente vamos detalhar LSP, daí você poderá alterar da forma que deseja, fique tranquilo!

O resultado da Barra de status deverá ser similar à esse:

staline.nvim

Se quiser um tema diferente veja o procedimento no repositório


Linha de Indentação

Um recurso muito legal em um IDE é o fato de possuir linhas que determinam onde iniciam e terminam a indentação de um código. E um plugin que faz isso de maneira extraordinária é o indent-blankline.nvim

Adicionamos ao plugins.lua e instalamos:

use 'lukas-reineke/indent-blankline.nvim'
-- :PackerInstall

Após instalar e usar o :PackerCompile(que no nosso caso é automático, como fizemos) ele já funciona! Abra qualquer arquivo e note que já há as linhas de indentação .

Você pode criar arquivos novos para cada plugin com o mesmo nome do plugin(é assim que eu faço), mas aqui vamos adicionar as configurações ao lua/plugins/utils.lua para ficar centralizada as informações.

Caso você queira que as linhas indentadas sejam coloridas, adicione isso ao seu utils.lua

-- PARA AS LINHAS DE INDENTAÇÃO

vim.opt.listchars:append("space:⋅")
--vim.opt.listchars:append("eol:↴")
vim.cmd [[highlight IndentBlanklineIndent1 guifg=#E06C75 gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent2 guifg=#E5C07B gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent3 guifg=#98C379 gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent4 guifg=#56B6C2 gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]]

vim.cmd([[
  hi! MatchParen cterm=NONE,bold gui=NONE,bold guibg=NONE guifg=#FFFFFF
  let g:indentLine_fileTypeExclude = ['dashboard']
]])


require("indent_blankline").setup {
    show_end_of_line = true,
    space_char_blankline = " ",
    char_highlight_list = {
        "IndentBlanklineIndent1",
        "IndentBlanklineIndent2",
        "IndentBlanklineIndent3",
        "IndentBlanklineIndent4",
        "IndentBlanklineIndent5",
        "IndentBlanklineIndent6",
    },
}

O resultado será isso:

indent-blankline.nvim

Para mais informações consulte o repositório .


Exibindo as cores quando digitadas

Quando trabalhamos com cores é interessante digitar o nome ou código da cor hexadecimal ou RGB e já exibí-la para sabermos de qual cor se trata e como ela será exibida. Por exemplo: #554477 .

Para isso usaremos o nvim-colorizer.lua

use 'nvim-colorizer.lua'
--PackerInstall

E no utils.lua basta importá-lo e chamar a função setup para carregá-lo:

Adicione essa linha:

-- PARA O COLORIZER
require'colorizer'.setup()

Agora as cores digitados no seu Neovim aparecerão assim:

nvim-colorizer.lua


Plugins extras

Para terminarmos esse episódio recomendo dois plugins que falamos sobre eles nesse vídeo .

Que é o Vim Surround, para criar ou substituir caracteres em torno de uma palavra, muito útil para quem escreve frequentemente em Markdown e o Nvim Autopairs , ele é superior ao Vim Autopairs, pois se houver caracterer na frente ele não adiciona.

Basta instalá-los.

use 'tpope/vim-surround'
use 'windwp/nvim-autopairs'
-- PackerInstall

O Surround estrá automaticamente disponível após instalar, já o Nvim Autopairs precisa adicionar esse código ao seu utils.lua: – PARA O AUTOPAIRS

require('nvim-autopairs').setup({
  enable_check_bracket_line = false
})

Para mais informações a respeito desses plugins consulte o repositório dos mesmos.


Outros artigos da série

  1. Como Customizar do Zero
  2. Do init.vim para o init.lua
  3. Instalando Plugins
  4. Personalizando a Aparência
  5. LSP, Autocomplete e Machine Learning ← Próximo

neovim lua


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!


caso queira entrar em contato conosco, envie-nos um e-mail.