Wesley Egberto
Posted on August 29, 2020
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.
Posted on August 29, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.