
Check out this ElmCast video for more detail.
If you don't have a preferred installation method, I recommend installing vim-plug, and then simply add Plug 'elmcast/elm-vim' to your plugin section:
NOTE: If you are using vim-polyglot, you need to disable its default elm plugin by adding let g:polyglot_disabled = ['elm'] to your config file.
First, make sure you have the Elm Platform installed. The simplest method to get started is to use the official npm package.
npm install -g elm
In order to run unit tests from within vim, install elm-test
npm install -g elm-test
For code completion and doc lookups, install elm-oracle.
npm install -g elm-oracle
To automatically format your code, install elm-format.
npm install -g elm-format
The plugin provides several <Plug> mappings which can be used to create custom
mappings. The following keybindings are provided by default:
| Keybinding | Description |
|---|---|
| <LocalLeader>m | Compile the current buffer. |
| <LocalLeader>b | Compile the Main.elm file in the project. |
| <LocalLeader>t | Runs the tests of the current buffer or 'tests/TestRunner'. |
| <LocalLeader>r | Opens an elm repl in a subprocess. |
| <LocalLeader>e | Shows the detail of the current error or warning. |
| <LocalLeader>d | Shows the type and docs for the word under the cursor. |
| <LocalLeader>w | Opens the docs web page for the word under the cursor. |
You can disable these mappings if you want to use your own.
let g:elm_setup_keybindings = 0
The preferred linter to use with elm-vim is Ale. It should work out of the box.
Syntastic support should work out of the box, but we recommend the following settings:
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:elm_syntastic_show_warnings = 1
let g:ycm_semantic_triggers = {
\ 'elm' : ['.'],
\}
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#sources#omni#input_patterns',
\ 'elm',
\ '\.')
:help elm-vim
let g:elm_jump_to_error = 0
let g:elm_make_output_file = "elm.js"
let g:elm_make_show_warnings = 0
let g:elm_syntastic_show_warnings = 0
let g:elm_browser_command = ""
let g:elm_detailed_complete = 0
let g:elm_format_autosave = 1
let g:elm_format_fail_silently = 0
let g:elm_setup_keybindings = 1
:ElmMake [filename] calls elm-make with the given file. If no file is given it uses the current file being edited.
:ElmMakeMain attempts to call elm-make with "Main.elm".
:ElmTest calls elm-test with the given file. If no file is given it runs it in the root of your project.
:ElmRepl runs elm-repl, which will return to vim on exiting.
:ElmErrorDetail shows the detail of the current error in the quickfix window.
:ElmShowDocs queries elm-oracle, then echoes the type and docs for the word under the cursor.
:ElmBrowseDocs queries elm-oracle, then opens docs web page for the word under the cursor.
:ElmFormat formats the current buffer with elm-format.

Copyright © Joseph Hager. See LICENSE for more details.
3,221 followers · starred Feb 2016
230 followers · starred Feb 2019
627 followers · starred Jun 2019
152 followers · starred Sep 2016

Check out this ElmCast video for more detail.
If you don't have a preferred installation method, I recommend installing vim-plug, and then simply add Plug 'elmcast/elm-vim' to your plugin section:
NOTE: If you are using vim-polyglot, you need to disable its default elm plugin by adding let g:polyglot_disabled = ['elm'] to your config file.
First, make sure you have the Elm Platform installed. The simplest method to get started is to use the official npm package.
npm install -g elm
In order to run unit tests from within vim, install elm-test
npm install -g elm-test
For code completion and doc lookups, install elm-oracle.
npm install -g elm-oracle
To automatically format your code, install elm-format.
npm install -g elm-format
The plugin provides several <Plug> mappings which can be used to create custom
mappings. The following keybindings are provided by default:
| Keybinding | Description |
|---|---|
| <LocalLeader>m | Compile the current buffer. |
| <LocalLeader>b | Compile the Main.elm file in the project. |
| <LocalLeader>t | Runs the tests of the current buffer or 'tests/TestRunner'. |
| <LocalLeader>r | Opens an elm repl in a subprocess. |
| <LocalLeader>e | Shows the detail of the current error or warning. |
| <LocalLeader>d | Shows the type and docs for the word under the cursor. |
| <LocalLeader>w | Opens the docs web page for the word under the cursor. |
You can disable these mappings if you want to use your own.
let g:elm_setup_keybindings = 0
The preferred linter to use with elm-vim is Ale. It should work out of the box.
Syntastic support should work out of the box, but we recommend the following settings:
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:elm_syntastic_show_warnings = 1
let g:ycm_semantic_triggers = {
\ 'elm' : ['.'],
\}
call neocomplete#util#set_default_dictionary(
\ 'g:neocomplete#sources#omni#input_patterns',
\ 'elm',
\ '\.')
:help elm-vim
let g:elm_jump_to_error = 0
let g:elm_make_output_file = "elm.js"
let g:elm_make_show_warnings = 0
let g:elm_syntastic_show_warnings = 0
let g:elm_browser_command = ""
let g:elm_detailed_complete = 0
let g:elm_format_autosave = 1
let g:elm_format_fail_silently = 0
let g:elm_setup_keybindings = 1
:ElmMake [filename] calls elm-make with the given file. If no file is given it uses the current file being edited.
:ElmMakeMain attempts to call elm-make with "Main.elm".
:ElmTest calls elm-test with the given file. If no file is given it runs it in the root of your project.
:ElmRepl runs elm-repl, which will return to vim on exiting.
:ElmErrorDetail shows the detail of the current error in the quickfix window.
:ElmShowDocs queries elm-oracle, then echoes the type and docs for the word under the cursor.
:ElmBrowseDocs queries elm-oracle, then opens docs web page for the word under the cursor.
:ElmFormat formats the current buffer with elm-format.

Copyright © Joseph Hager. See LICENSE for more details.
3,221 followers · starred Feb 2016
230 followers · starred Feb 2019
627 followers · starred Jun 2019
152 followers · starred Sep 2016