Neste post descrevo como configurei meu vim para trabalhar com a linguagem Dart e o framework Flutter.
Suporte a linguagem
O básico é instalar o suporte a linguagem. Com isso já temos 'syntax highlighting' e 'indentation'.
❕instalação
Para mais detalhes sobre como instalar os plugins acesse o repositório do gerenciador vim-plug .
Para instalar o dart-vim-plugin :
Plug 'dart-lang/dart-vim-plugin'
Enter fullscreen mode
Exit fullscreen mode
Setup & Configurações
Se você já utilizou o VSCode, sabe que existe um plugin ~ eu diria que obrigatório ~ para integrar o editor ao Flutter. Para obter os mesmos benefícios no vim utilizei o coc.vim com a extensão coc-flutter
.
CoC.vim & coc-flutter
Primeiro, instale o coc.vim:
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Enter fullscreen mode
Exit fullscreen mode
Em seguida, instale a extensão para o Flutter.
:CocInstall coc-flutter
Enter fullscreen mode
Exit fullscreen mode
Você pode configurar o Ctrl+Space
para abrir as janelas de sugestões.
Configuraçã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
Assim as sugestões aparecem ao digitar também e com o <TAB>
se navega nas opções.
Confira no README do projeto um exemplo de configuração
Navegar para definição:
nmap <silent> gf <Plug>(coc-definition)
Enter fullscreen mode
Exit fullscreen mode
Ações de código
Com este recurso você consegue executar ações no seu código como adicionar, remover ou extrair um widget para uma classe ou método.
Seguindo o README, configuramos desta forma:
xmap <leader>a <Plug>(coc-codeaction-selected)
nmap <leader>a <Plug>(coc-codeaction-selected)
Enter fullscreen mode
Exit fullscreen mode
Assim você pode utilizar o comando <leader>a
no modo visual/seleção ou <leader>aw
se estiver no modo normal. Para receber apenas sugestões de imports ou organizar o arquivo você pode utilizar <leader>aap
.
Flutter: Run, Reload, Restart & DevLog
A extensão coc-flutter
habilita os comandos do Flutter SDK e assim podemos listar os comandos:
CocList --input=flutter commands
Enter fullscreen mode
Exit fullscreen mode
Você pode configurar alguns atalhos:
nmap <leader>fc :CocList --input=flutter commands<CR>
nmap <leader>fe :CocCommand flutter.emulators<CR>
nmap <leader>fr :CocCommand flutter.run<CR>
nmap <leader>fq :CocCommand flutter.dev.quit<CR>
nmap <leader>fh :CocCommand flutter.dev.hotRestart<CR>
nmap <leader>fl :CocCommand flutter.dev.openDevLog<CR>
Enter fullscreen mode
Exit fullscreen mode
Os comandos flutter.dev.*
só aparecem após a execução dos comandos run
ou attach
.
Meu nvim config
Para ficar como exemplo, vou deixar aqui o meu init.vim
.
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!