A (Neo)Vim Autocompletion and linter for Terraform, a HashiCorp tool
IMPORTANT: This plugin now allow version based completion
Terraform Module is supported(though there might be bugs)
(R) for Require , (O) for Optional and (B) for Block
Require +ruby
or +ruby/dyn
for vim & json gem for ruby as well
Snippets completion is done through <C-X><C-K>
NeoBundle 'hashivim/vim-terraform'
NeoBundle 'vim-syntastic/syntastic'
NeoBundle 'juliosueiras/vim-terraform-completion'
Plug 'hashivim/vim-terraform'
Plug 'vim-syntastic/syntastic'
Plug 'juliosueiras/vim-terraform-completion'
" Minimal Configuration
set nocompatible
syntax on
filetype plugin indent on
call plug#begin('~/.vim/plugged')
" (Optinal) for Tag Sidebar
" Plug 'majutsushi/tagbar'
Plug 'hashivim/vim-terraform'
Plug 'vim-syntastic/syntastic'
Plug 'juliosueiras/vim-terraform-completion'
call plug#end()
" Syntastic Config
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
" (Optional)Remove Info(Preview) window
set completeopt-=preview
" (Optional)Hide Info(Preview) window after completions
autocmd CursorMovedI * if pumvisible() == 0|pclose|endif
autocmd InsertLeave * if pumvisible() == 0|pclose|endif
" (Optional) Enable terraform plan to be include in filter
let g:syntastic_terraform_tffilter_plan = 1
" (Optional) Default: 0, enable(1)/disable(0) plugin's keymapping
let g:terraform_completion_keys = 1
" (Optional) Default: 1, enable(1)/disable(0) terraform module registry completion
let g:terraform_registry_module_completion = 0
put this in your init.vim
let g:deoplete#omni_patterns = {}
let g:deoplete#omni_patterns.terraform = '[^ *\t"{=$]\w*'
let g:deoplete#enable_at_startup = 1
call deoplete#initialize()
NOTE: For newer version of deoplete if the above doesn't work
let g:deoplete#omni_patterns = {}
call deoplete#custom#option('omni_patterns', {
\ 'complete_method': 'omnifunc',
\ 'terraform': '[^ *\t"{=$]\w*',
\})
call deoplete#initialize()
by default , all providers uses the latest version, but you can add a file call .tfcompleterc
under working directory, and content can be this:
vsphere=1.0.3
aws=0.1.0
using the syatax of <provider>=<version>
By default no community providers is enable, to use one, first refer to COMMUNITY_PROVIDER_VERSIONS.md , then add a .tfcompleterc
to your current working dir , for ex. to use Generic REST Api Provider, the .tfcompleterc would look like
restapi=master
To use completion for google beta provider, please use .tfcompleterc
and put google=beta_<version>
<leader>rr
)terraform validate
and tflint
into SynstaticNOTE: enabling deep check for tflint can be a bit slow
NOTE: To use tffilter
please add export PATH=$PATH:/path/to/this/plugin/bin
to your bashrc or zshrc
terraform get
beforehand)Type(B)
)