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!