Como migrar o init.vim para a linguagem lua – Parte 3

Olá! Continuando a série Como migrar o init.vim para a linguagem lua – Parte 3, vamos continuar com a instalação do gerenciador de plugins e um tema mais moderno.

Se você perdeu as postagens anteriores, é recomendável que você siga as etapas anteriores para preparar o ambiente e a estrutura de arquivos necessária, e, finalmente, volte aqui para continuar o processo de migração.

Gerenciador de plugins

Antes de migrar meu init.vim para a linguagem lua, eu utilizava um gerenciador de plugins chamado VimPlug, entretanto, como o objetivo desta série é fazer a migração para a linguagem lua, que é mais rápida e moderna, podemos modernizar também o gerenciador de plugins instalando o lazy.nvim.

lazy.nvim

Para instalar o gerenciador de plugins Lazy, você precisa ter certeza que atende aos requisitos mínimos:

  • Neovim versão 0.8.0 ou mais recente
  • Git versão 2.19.0 ou mais recente
  • Uma fonte do NerdFonts, que possui ícones e símbolos. Este passo é opcional, mas o Neovim fica bem mais bonito se você tiver uma fonte do NerdFonts instalada e configurada no seu terminal.

Adicionando o gerenciador de plugins

Primeiramente, precisamos criar um diretório onde as configurações dos plugins vão ficar. Como um dos objetivos dessa série é facilitar a manutenção, criar arquivos separados para configurar cada item é um fator importante.

Crie a pasta plugins dentro da pasta ~/.config/nvim/lua/fsg, que criamos nos posts passados. Lembrando que fsg é o nome do pacote que eu escolhi anteriormente. Caso você tenha escolhido um nome diferente, faça a substituição de acordo com a sua realidade. No terminal, rode o comando:
mkdir ~/.config/nvim/lua/fsg/plugins

Abra o arquivo init.lua no neovim e altere o conteúdo para ficar da seguinte forma:

-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
  local lazyrepo = "https://github.com/folke/lazy.nvim.git"
  local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
  if vim.v.shell_error ~= 0 then
    vim.api.nvim_echo({
      { "Failed to clone lazy.nvim:\n", "ErrorMsg" },
      { out, "WarningMsg" },
      { "\nPress any key to exit..." },
    }, true, {})
    vim.fn.getchar()
    os.exit(1)
  end
end
vim.opt.rtp:prepend(lazypath)

-- Nossos requires
require('fsg.options')

-- Carrega o lazy.nvim
require("lazy").setup({
  spec = {
    { import = "fsg.plugins" }
  },
  rocks = {
    enabled = false
  }
})

Conforme destacado acima, nosso require('fsg.options') que havíamos adicionado anteriormente deve ficar depois do bootstrap, e antes da chamada da função de setup do lazy.nvim.

Feita a adição acima no init.lua, basta salvar o arquivo e reiniciar o Neovim. É possível notar que ao abrir o neovim novamente, receberá a seguinte mensagem de erro:

Este erro ocorre pois ainda não adicionamos nenhum arquivo de configuração de plugin na pasta de plugins, o que vamos corrigir na próxima etapa.

Tema

Atualmente existem incontáveis temas que podem ser utilizados no neovim. Existe um site chamado vimcolorschemes, onde é possível pesquisar por temas, e dá pra se perder lá com facilidade, devido à quantidade de opções.

Com a migração do init.nvim para a linguagem lua, vale a pena utilizar temas que aceitam a configuração em lua também, pois ficaria estranho instalar um tema usando vimscript nessa estrutura.

Tokyonight

Um dos temas que eu uso em casa e no trabalho é o tokyonight.nvim. Ele é um tema escuro, com cores suaves, que eu achei bem fácil de acostumar. Usaremos este tema como base para o nosso guia.

Adicionar o plugin tokyonight.nvim é muito fácil, já que ele não possui nenhuma dependência direta de outros plugins ou bibliotecas. Para tal, vamos criar um arquivo chamado theme.lua dentro da pasta plugins, que criamos anteriormente. Rode o comando touch ~/.config/nvim/lua/fsg/plugins/theme.lua ou crie o arquivo pelo próprio neovim, e adicione o seguinte conteúdo:

return {
  {
    'folke/tokyonight.nvim',
    lazy = false,
    priority = 1000,
    opts = {
      style = 'storm',
      styles = {
        functions = { italic = true }
      },
    },
    config = function(_, opts)
      require('tokyonight').setup(opts)
      vim.cmd([[colorscheme tokyonight]])
    end
  }
}

Salve o arquivo e reinicie o Neovim. Quando ele for reaberto, o lazy.nvim vai automaticamente instalar o plugin do tokyonight.nvim, e o tela será aplicado após a instalação.

Agora sim… bem melhor. Caso você não tenha gostado da aparência do tema, existem diversos outros temas disponíveis, como o kanagawa.nvim, e também o nightfox.nvim, que possui algumas variantes. Fica ao seu critério qual tema escolher.

Conclusão

Neste ponto temos configurado o gerenciador de plugins lazy.nvim e adicionamos o primeiro plugin, que é o tema tokyonight.nvim. Na próxima postagem da série, vamos configurar mais alguns plugins e estender um pouco mais as funcionalidades do editor:

  • telescope.nvim: Será o nosso file picker
  • lualine.nvim: Barra de status aprimorada
  • nvim-web-devicons: Ícones diversos que são requisitos para outros plugins

Espero que você tenha gostado de Como migrar o init.vim para a linguagem lua – Parte 3, e esteja ansioso para a próxima parte. Um abraço e até a próxima.

Deixe um comentário