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'.
Para mais detalhes sobre como instalar os plugins acesse o repositório do gerenciador vim-plug. ❕instalação
Para instalar o dart-vim-plugin:
Plug 'dart-lang/dart-vim-plugin'
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'}
Em seguida, instale a extensão para o Flutter.
:CocInstall coc-flutter
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()
Assim as sugestões aparecem ao digitar também e com o <TAB>
se navega nas opções.
Navegar para definição:
nmap <silent> gf <Plug>(coc-definition)
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)
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
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>
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
.
enriquesaid / nvim-config
my nvim config
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
Qualquer coisa estamos ai nos comentários 😄
Um abraço!
Top comments (2)
Very useful post, thank you!
Parabéns pelo post!