Vim commands for Flutter, including hot-reload-on-save and more.
Usage documentation can be found both in this README, as well
as via calling :h flutter.
vim-flutter is a Vimscript-only plugin, and makes heavy
use of Vim8's async jobs. It can be installed with a
package manager like
vim-plug
, for example.
Though this package doesn't depend on it, having
dart-vim-plugin
available is recommended, for a better experience.
You may also consider combining
package:dart_language_server
with a Language Server Protocol client, like
ale.
Plug 'dart-lang/dart-vim-plugin'
Plug 'thosakwe/vim-flutter'
" Run :PlugInstall to install the plugin.Ultimately, installation is up to you.
g:flutter_command- The Flutter executable path/name; defaults to'flutter'.g:flutter_hot_reload_on_save- Whether to auto hot-reload whendartfiles are saved; defaults to1.g:flutter_hot_restart_on_save- Whether to auto hot-restart whendartfiles are saved; defaults to0.g:flutter_show_log_on_run- Automatically open__Flutter_Output__when starting flutter using:FlutterRun; it can have one of the following values:"split"or1: Open the log in a split, this is the default."tab": Open the log in a new tab."hidden"or0: Do not open the log by default, can be opened later withFlutterSplitetc.
g:flutter_show_log_on_attach- Identical tog:flutter_show_log_on_runbut affecting the:FlutterAttachcommand.g:flutter_split_height- Initial height of the window opened by:FlutterSplit(or:FlutterRunand:FlutterAttach, wheng:flutter_show_log_on_runis set to"split"); defaults to standard vim behavior, which is splitting the window in half.g:flutter_autoscroll- Autoscroll the flutter log when1, defaults to0.g:flutter_use_last_run_option- When set to1then:FlutterRunwill use the arguments from the previous call when no arguments are specified.g:flutter_use_last_attach_option- Identical tog:flutter_use_last_run_optionbut affecting the:FlutterAttachcommand.g:flutter_close_on_quit- Whether to close all__Flutter_Output__windows (splits and tabs) on:FlutterQuit; defaults to0.
:FlutterRun <args>- callsflutter run <args>:FlutterAttach <args>- callsflutter attach <args>:FlutterHotReload- triggers a hot reload on the current Flutter process:FlutterHotRestart- triggers a hot restart on the current Flutter process:FlutterScreenshot- takes a screenshot of the current Flutter application and saves it in the project directory:FlutterQuit- quits the current Flutter process:FlutterDevices- opens a new buffer, and writes the output offlutter devicesto it:FlutterSplit- opens Flutter output in a horizontal split:FlutterEmulators- Executes aflutter emulatorsprocess.:FlutterEmulatorsLaunch- Executes aflutter emulators --launchprocess, with any provided arguments.:FlutterVisualDebug- Toggles visual debugging in the running Flutter process.
The following are self-explanatory:
:FlutterVSplit:FlutterTab
If you are using a GUI Vim Variant, you can add a Flutter menu by calling call FlutterMenu().
A convenient feature to have when working with Flutter is
to automatically hot-reload an app once a file is saved.
By default, whenever a dart file is saved, if and only if
a Flutter process is running, it will be hot-reloaded.
You can disable this by setting g:hot_reload_on_save=0,
before vim-flutter is loaded.
Plug 'thosakwe/vim-flutter'
call plug#end()
" Enable Flutter menu
call FlutterMenu()
" Some of these key choices were arbitrary;
" it's just an example.
nnoremap <leader>fa :FlutterRun<cr>
nnoremap <leader>fq :FlutterQuit<cr>
nnoremap <leader>fr :FlutterHotReload<cr>
nnoremap <leader>fR :FlutterHotRestart<cr>
nnoremap <leader>fD :FlutterVisualDebug<cr>