Olá, seja bem-vindo ao meu blog!

Aqui, compartilho meus aprendizados e reflexões sobre tecnologia e desenvolvimento de software. Os temas podem variar, mas sempre estarão relacionados à programação e boas práticas da área.

Cada post do blog corresponde a uma issue no repositório do GitHub. Se quiser contribuir com a discussão, fique à vontade para deixar seu comentário na issue correspondente.

Aproveite o conteúdo e boa leitura!


Como eu migrei para o NeoVim sem querer:

Ao longo destes meus míseros ~9 anos de codificação, eu sempre utilizei o VSCode (ainda brinquei um pouco no Sublime) como minha principal ferramenta. Gosto da simplicidade, leveza (se comparado a outras do mesmo nicho) e da possibilidade de customização e incrementos que ele me fornece. Sempre salvava as configurações de usuário no Gist ou em algum arquivo de fácil acesso para, quando precisasse configurar, tê-lo do jeito que gosto.

Porém, nos últimos meses, com a agilidade que as IAs trazem ao facilitar o trabalho chato (autocompletes meio óbvios que irão acontecer, trabalho repetitivo), o fato de que essas mesmas IAs não vieram para nos substituir, mas sim para aumentar a quantidade de trabalho (principalmente para aproveitar o momento dos investimentos) e a exaustão do trabalho repetitivo (mais uma vez ele aqui), resolvi tentar mudar um pouco o contexto do meu trabalho diário para ver se me distraía um pouco. Inclusive, essa é uma prática que tento manter sempre que me pego no poço sem fundo da repetição: tento mudar um pouco o contexto para conhecer novas ferramentas, métodos etc. Parece que isso traz a magia novamente.

Foi então que resolvi testar o NeoVim. Sempre que preciso atualizar algo via terminal, utilizo o Vim (desculpa galera do Nano, ele não é minha praia). Procurei como instalar e comecei a brincar: instalei um plugin ali, outro aqui, testei configurações já predefinidas, como o LazyVim… Depois de alguns testes, decidi que utilizaria o NeoVim da forma mais simples possível, com apenas alguns poucos plugins instalados (postarei ao final o arquivo de configuração). Comecei a achá-lo bem interessante — principalmente depois que o YouTube, não magicamente, começou a me sugerir vários vídeos sobre o assunto. Você fica parecendo uma criança: “Nossa, eu consegui copiar isto! Eu consegui atualizar isso em lote!”. É uma sensação boa de progresso.

O principal ponto que me fez permanecer no NeoVim foi a capacidade de isolar contextos. A base de código em que trabalho exige, às vezes, algumas mudanças de contexto. No VSCode, é possível deixar as abas abertas, mas, como elas ficam todas visíveis, isso me desconcentra um pouco. Já com o Terminal + NeoVim, eu abro uma nova aba do terminal e deixo um contexto isolado no NeoVim. Ou seja, as abas desse contexto não ficam visíveis quando mudo de aba no terminal — e isso foi o meu potinho de ouro.

Minhas config:

" Foras as configurações abaixo, também utilizo o https://github.com/github/copilot.vim

call plug#begin('~/.vim/plugged')

Plug 'nvim-lua/plenary.nvim'
Plug 'nvim-telescope/telescope-fzf-native.nvim', { 'do': 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release' }
Plug 'nvim-telescope/telescope.nvim', { 'tag': '0.1.8' }
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
Plug 'ayu-theme/ayu-vim'
Plug 'neovim/nvim-lspconfig'
Plug 'williamboman/mason.nvim'
Plug 'williamboman/mason-lspconfig.nvim'
Plug 'hrsh7th/nvim-cmp'
Plug 'hrsh7th/cmp-nvim-lsp'
Plug 'hrsh7th/cmp-buffer'
Plug 'hrsh7th/cmp-path'
Plug 'airblade/vim-gitgutter'
Plug 'mbbill/undotree'
Plug 'folke/tokyonight.nvim', { 'tag': 'main' }
Plug 'victorvf/simple-git-status.nvim'

call plug#end()


" Configurações básicas
set colorcolumn=80,120
set number
set relativenumber
set tabstop=4
set shiftwidth=4
set expandtab
set clipboard=unnamedplus
set termguicolors
set incsearch


" Tema
let ayucolor="light"
colorscheme ayu
" colorscheme tokyonight


" Mapeamentos de teclas
nnoremap <leader>ff <cmd>Telescope find_files<cr>
nnoremap <leader>fc <cmd>Telescope find_files cwd=%:p:h<cr>
nnoremap <leader>fg <cmd>Telescope live_grep<cr>
nnoremap <leader>fb <cmd>Telescope buffers<cr>
nnoremap <leader>fh <cmd>Telescope help_tags<cr>
nnoremap <leader>fo <cmd>Telescope oldfiles<cr>

vnoremap <C-c> "+y
nnoremap <F5> :UndotreeToggle<CR>
nnoremap <C-S-]> :vsp<CR><C-w>l<C-]>


" Configura as cores dos signs do gitgutter
highlight GitGutterAdd guibg=#a8cc8c guifg=#282c34 ctermbg=green ctermfg=black
highlight GitGutterChange guibg=#e5c07b guifg=#282c34 ctermbg=yellow ctermfg=black
highlight GitGutterDelete guibg=#e06c75 guifg=#282c34 ctermbg=red ctermfg=black
highlight GitGutterChangeLine guibg=#61afef guifg=#282c34 ctermbg=blue ctermfg=black
highlight GitGutterDeleteLine guibg=#abb2bf guifg=#282c34 ctermbg=gray ctermfg=black

let g:gitgutter_sign_added = '➜'
let g:gitgutter_sign_modified = '➜'
let g:gitgutter_sign_removed = '➜'
let g:gitgutter_sign_modified_removed = '➜'
let g:gitgutter_sign_removed_firstline = '➜'
let g:gitgutter_sign_modified_firstline = '➜'


" Configurações em LUA
lua << EOF
require("mason").setup()
require("mason-lspconfig").setup({
  ensure_installed = { "pyright" },
})
require('lspconfig').pyright.setup {}

local cmp = require'cmp'

cmp.setup({
  mapping = cmp.mapping.preset.insert({
    ['<C-Space>'] = cmp.mapping.complete(),
    ['<CR>'] = cmp.mapping.confirm({ select = true }),
  }),
  sources = cmp.config.sources({
    { name = 'nvim_lsp' },
    { name = 'buffer' },
    { name = 'path' },
  }),
})
EOF
            

Espero que vocês tenham gostado! Apenas uma pequena reflexão sobre mudança de contexto para sair um pouco da rotina — e, claro, sobre como o NeoVim é muito bom. Abraços!