As it stands I hate dealing with terraform because it is horrifyingly undiscoverable.
Vim/Neovim has had LSP support for some time with plugins and now built in natively.
I use COC vim as it's the fastest to get started and I rarely have to do much config as it's based on VSCode and comes with sane bindings for go-to-def, refactoring and more. https://github.com/neoclide/coc.nvim https://github.com/prabirshrestha/vim-lsp https://github.com/neovim/nvim-lspconfig
You can try to use either of these implementations: https://github.com/juliosueiras/terraform-lsp https://github.com/hashicorp/terraform-ls
These are both fairly limited but you can see every editor (except intellij) uses this under the hood.
I've used them at companies with 300+ terraform repos and have never had much of an issue navigating/understanding TF through Vim.
Do those projects allow me to follow a user defined variable to its definition?
As it stands I hate dealing with terraform because it is horrifyingly undiscoverable.