Neovim - Workflow para Java, C# e JS/TypeScript
Atualização 01/01/2023: como esse post usava a versão Neovim 0.4.x, escrevi um novo post com setup na versão Neovim 0.8 e LSP.
Background
Sou desenvolvedor especializado em Java e trabalho em projetos desenvolvidos em Java, C#, Javascript/TypeScript e Angular.
Introdução
Neovim é um projeto que, de acordo com o repositório no Github, busca refatorar agressivamente o Vim para que seja possível:
- Simplificar manutenção e encorajar contribuição;
- Dividir o trabalho entre múltiplos desenvolvedores;
- Habilitar UI avançada sem modificações no core;
- Maximizar extensibilidade.
A maior vantagem que percebi foi a comunidade provendo diversas interfaces e extensões que facilitam a transição de uma IDE para o Neovim.
Um exemplo de interface é o VimR.
Para introdução e motivação completa acesse a Wiki no Github.
Instalação
Para instalação basta seguir os passos descritos aqui onde são disponibilizados os pacotes e comandos para instalação em diversos SOs.
Todos os comandos do Vim funcionam normalmente no Neovim visto que é um fork da versão Vim 7.4.160 e que vem sendo atualizado constantemente.
Plugins
Alguns plugins que uso:
-
Vundle: gerenciar os plugins =), permite instalar/atualizar os plugins através da referência do github (ex.:
Plug 'VundleVim/Vundle.vim'
), vale a pena adicionar uma referência dele mesmo para permitir atualizações automáticas. -
Fzf e Fzf.vim: plugin para permitir pesquisar arquivos no disco, texto, etc, igual ao famoso
Ctrl+P
do Sublime Text. - Vim-airline: plugin para exibir algumas informações no rodapé do painel (como branch, linguagem, tamanho do arquivo, etc).
-
Vim-numbertoggle: plugin para facilitar a navegação relativa com
j
ek
. - Vim-easymotion: plugin para facilitar e acelerar a navegação no arquivo.
-
Vim-multiple-cursors: plugin para habilitar multiplos cursores igual ao
Ctrl+D
do VS Code. - Coc.nvim: plugin para habilitar intellisense com autocomplete, LSP e snippets, tudo de forma assíncrona e leve. Provê ótima extensibilidade com vários plugins para várias linguagens. Utilizo em Java, C# e Javascript/Typescript.
- Vim-Syntastic: plugin para code checking e exibição do resultado no editor.
- Omnisharp-vim: plugin para suporte do desenvolvimento completo em C#.
Workflow
O plugin Coc.nvim
basicamente provê suporte para as principais linguagens que utilizo no dia-a-dia.
Para facilitar a experiência no Neovim e trazer aquele feeling de IDE utilizo as extensões abaixo:
-
coc-actions: implementa popups no
Coc.nvim
de forma que as sugestões de snippets, ações e contexto sejam mostradas no próprio cursor. - coc-explorer: explorador de arquivos leve e customizável, permitindo funcionar em um painel fixo ou popup.
- coc-snippets: provê suporte para utilizar extensões de diversos plugins (UltiSnips, snipmate e até VSCode) com preview.
Também utilizo o antoinemadec/coc-fzf para exibir as ações do Coc.nvim
em popups com Fzf que permite agilizar a visualização e ação necessária.
Para facilitar minha vida nas tarefas rápidas que faço pelo terminal (como docker, git, npm, etc) utilizo o vim-floaterm que permite executar diversas tarefas através de popups.
E alguns plugins para snippets:
- ultisnips: provê suporte de snippets leve e rápido.
- vim-snippets: disponibiliza diversos snippets para diversas linguagens.
Abaixo segue as combinações de plugins que utilizo para cada linguagem de forma que tenha sempre autocomplete, snippets, code checking e builds:
Java
Utilizo Coc.nvim
com a extensão coc-java que instala o JDT do Eclipse que provê suporte completo igual ao Eclipse.
E utilizo o vim-syntastic
que efetua o code checking de forma assíncrona.
Csharp
Utilizo os plugins Coc.nvim
com a extensão coc-omnisharp e Omnisharp-vim
.
Javascript/TypeScript
Utilizo o Coc.nvim
com a extensão coc-tsserver.
Dotfiles
Além desses existem diversos outros plugins para facilitar navegação, edição e suporte de linguagens e highlight de sintaxes.
Para ver todos os plugins e configurações que utilizo até a escrita deste post, acesse meu Dotfiles no Github na branch para Neovim 0.4.
Top comments (0)