DEV Community

Cover image for Neovim - Workflow para Java, C# e JS/TypeScript
Wesley Egberto
Wesley Egberto

Posted on • Edited on

7 2

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.

Heroku

Build apps, not infrastructure.

Dealing with servers, hardware, and infrastructure can take up your valuable time. Discover the benefits of Heroku, the PaaS of choice for developers since 2007.

Visit Site

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs