Adds syntax highlighting and other editing features for Terraform files
- Auto-completion support
Terraform
high level types(variable, resource, data, module ...)
auto completion support.resource
types(aws_dynamodb_table ...)
auto completion support foraws
,azure
,google
andoci
resource | data | module | output | variable
property types auto completion supportresource | data
1-level nested block property types auto completion support
- Syntax highlighting for
.tf
and.tfvars
files (and.hcl
) - Automatic formatting using
terraform fmt
- Automatically closes braces and quotes
- Adds a command for running
terraform validate
- Linting support with the help of tflint
- Browse document symbols
- Browse workspace symbols
- Peek definition
- Goto definition
- Find references
- Completion for variables and outputs
- Rename variables, resource, and data types and all references
- Show variable values on hover
- CodeLens shows if a section is referenced
- Indexing support is no longer experimental
- Indexing support no longer requires a separate tool (HCL parsing is now built directly into the plugin)
- Rename refactoring now supports all types
- Hovering a variable shows the default value
- A code lens shows how often a resource (or variable, or data) is referenced
- Terraform now works with Visual Studio LiveShare (thanks to @lostintangent)
The plugin also ships a formatter integration which uses terraform fmt
for
formatting files. Formatting can be enabled or disabled by setting editor.formatOnSave
or [terraform]editor.formatOnSave
to true
or false
.
You can lint your terraform templates by invoking the command Terraform: Lint
from within VSCode.
Linting is supported with the help of tflint, either download it and add it
to your path or can configure terraform.lintPath
to point to your tflint executable. tflint
will be executed
with the workspace directory as the current working directory so you can configure tflint
by dropping a .tflint.hcl
file in your workspace root.
You can change the configuration file path by supplying the configuration option terraform.lintConfig
.
You can terraform validate
your project by invoking the command Terraform: Validate
from within VSCode.
terraform validate
is invoked with the workspace root as current working directory and with the setting
terraform.templateDirectory
as template directory, by default this setting is "templates" (relative to
workspace root).
Because the output of terraform validate
is not parseable the output is just dumped into the output tab.
The plugin indexes all the terraform files in the workspace by default and enables some advanced features, like Goto Definition and Show references based on information gathered during indexing.
Indexing is enabled by default but can be disabled using terraform.indexing.enable
.
Press Ctrl+Shift+O
or ⇧⌘O
to browse symbols in the current file.
Press Ctrl+T
or ⌘T
to quickly jump to any symbol.
Press Alt+F12
or ⌥F12
to peek definition (currently only some types supported).
Press Shift+F12
or ⇧F12
to find all references (currently only variables).
Press Ctrl+Space
(also triggered automatically after .
and "
) for simple code completion (currently only variables and outputs).
Press F2
to automatically rename a variable and its usages.