Playing with VS Code also reminds me how overloaded the tab key can be. It might do indentation, or LSP completion, or snippet completion, or Copilot completion. In Emacs I've configured these operations on separate keys (e.g. yasnippet on SPC) which is less surprising.