Neovim - Workflow para Java, C# e JS/TypeScript

wesleyegberto

Wesley Egberto

Posted on August 29, 2020

Neovim - Workflow para Java, C# e JS/TypeScript

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 e k.
  • 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.

💖 💪 🙅 🚩
wesleyegberto
Wesley Egberto

Posted on August 29, 2020

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related