DEV Community

Cover image for [pt-BR] NeoVim para Typescript
Enrique Marques Junior
Enrique Marques Junior

Posted on • Edited on

2

[pt-BR] NeoVim para Typescript

Em outro post aqui eu descrevi como configurei o vim para trabalhar com Dart e Flutter. Da mesma forma, pretendo te ajudar a configurar o seu vim para trabalhar com typescript.

Suporte a linguagem

Considerando que você utilize o vim-plug para instalar os plugins para o seu vim. O primeiro passo é adicionar o suporte a linguagem:

Plug 'HerringtonDarkholme/yats.vim'

Enter fullscreen mode Exit fullscreen mode

React

Se você vai utilizar React (arquivos .tsx):

Plug 'MaxMEllon/vim-jsx-pretty'
Enter fullscreen mode Exit fullscreen mode

Plugins

Aqui você precisa considerar as ferramentas que você utiliza no seu dia-a-dia. Por exemplo, para quem utiliza styled-components é recomendado que se instale o suporte a syntax:

Plug 'styled-components/vim-styled-components', { 'branch': 'main' }
Enter fullscreen mode Exit fullscreen mode

Vale considerar também o Prettier:

Plug 'prettier/vim-prettier'
Enter fullscreen mode Exit fullscreen mode

Para o HTML, eu utilizo apenas o emmet:

Plug 'mattn/emmet-vim'
Enter fullscreen mode Exit fullscreen mode

CoC

Com os plugins acima você vai conseguir desenvolver tranquilo, com syntax highlight e tudo mais. Porem, para obter recursos mais atuais como "go-to-definition", "autocomplete" e "auto import" precisamos instalar o CoC.

Plug 'neoclide/coc.nvim', {'branch': 'release'}
Enter fullscreen mode Exit fullscreen mode

Indique as extensões que você irá utilizar:

let g:coc_global_extensions = [
  \ 'coc-snippets',
  \ 'coc-actions',
  \ 'coc-lists',
  \ 'coc-tsserver',
  \ 'coc-html',
  \ 'coc-css',
  \ 'coc-prettier',
  \ 'coc-vimlsp',
  \ ]
Enter fullscreen mode Exit fullscreen mode

Você também pode instalar por dentro do neovim com o comando:

:CocInstall <extension-name>
Enter fullscreen mode Exit fullscreen mode

CoC: Popup de sugestão

Exemplo

<Tab> para navegar e <Ctrl-Space> para abrir popup de sugestão:

inoremap <silent><expr> <TAB>
      \ pumvisible() ? "\<C-n>" :
      \ <SID>check_back_space() ? "\<TAB>" :
      \ coc#refresh()
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>"

function! s:check_back_space() abort
  let col = col('.') - 1
  return !col || getline('.')[col - 1]  =~# '\s'
endfunction

inoremap <silent><expr> <c-space> coc#refresh()
Enter fullscreen mode Exit fullscreen mode

CoC: Renomear Símbolo

Exemplo

nmap <leader>rn <Plug>(coc-rename)
Enter fullscreen mode Exit fullscreen mode

CoC: Navegação de código

Exemplo

nmap <silent> gf <Plug>(coc-definition)
Enter fullscreen mode Exit fullscreen mode

CoC: Ações de Código

Exemplo

Exemplo de uso: <leader>aap para o parágrafo atual. <leader>aw para a palavra.

xmap <silent> <leader>a  <Plug>(coc-codeaction-selected)
nmap <silent> <leader>a  <Plug>(coc-codeaction-selected)
Enter fullscreen mode Exit fullscreen mode

CoC: Lista de comandos, extensões e diagnósticos

nnoremap <silent> <space>a  :<C-u>CocList diagnostics<cr>
nnoremap <silent> <space>e  :<C-u>CocList extensions<cr>
nnoremap <silent> <space>c  :<C-u>CocList commands<cr>
Enter fullscreen mode Exit fullscreen mode

Meu setup

Vou deixar aqui o repositório onde mantenho minha config. Além do que foi falado aqui você também vai encontrar o tema que eu uso e outras configurações pessoais. Vale pesquisar o da galera por ai também :)

nvim-config

my nvim config

requirements

color scheme

install

:PaqInstall
:PaqSync

:LspInstall lua
:LspInstall typescript
:LspInstall html
:LspInstall css

:TSInstall lua
:TSInstall javascript
:TSInstall typescript
:TSInstall json
:TSInstall html
:TSInstall css
:TSInstall yaml
:TSInstall dart
Enter fullscreen mode Exit fullscreen mode

Qualquer coisa estamos ai nos comentários 😄
Um abraço!

Heroku

Simplify your DevOps and maximize your time.

Since 2007, Heroku has been the go-to platform for developers as it monitors uptime, performance, and infrastructure concerns, allowing you to focus on writing code.

Learn More

Top comments (1)

Collapse
 
klebermotta profile image
Kleber Motta

Cara, sensacional, ficou muito bacana o resultado. Sou iniciante no Vim e depois que comecei a usar me apaixonei, vou usar esse setup tmb, muito obrigado!

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

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay