How to get VSCode autocomplete working?
Step 1: Install vscode.
Step 2: Install Haskell extension.
Step 3: Open nix-shell :
cd plutus
nix-shell
Step 4: cd to your code directory, then run code . , for example:
cd ../plutus-pioneer-program/code/week02/
code .
Now you should have features like "Autocomplete", "Type information" working.

Troubleshooting

Plugin errors

Error:
Program error: GHC Core to PLC plugin: E043:Error: Reference to a name which is not a local, a builtin, or an external...
You can check the solution provided by IOHK, I tried it but it didn't work for me, I think we have just to live with it for the time being: https://github.com/input-output-hk/plutus/blob/master/doc/plutus/tutorials/troubleshooting.rst#plugin-errors

Haskell language server issues

Error:
ghcide compiled against GHC 8.10.3 but currently using 8.10.2.20201118

For MacOS

(This information is provided by community member jeppeman from Plutus pioneer program.)
Hey, been fighting with an issue during the day related to MacOS and HLS (haskell language server), so I thought I'd drop the solution here in case anyone else is experiencing the same thing: On MacOS Catalina (maybe other versions as well), if HLS is not dynamically linked, it crashes when working with files that contain template haskell (which incidentally all plutus smart contracts do). This error manifests itself by stating: The Haskell (<proj>) server crashed 5 times in the last 3 minutes. The server will not be restarted. in the editor (in my case vim). In order to get rid of this issue HLS has to be built from source with dynamic linking enabled, see the following comment for more info: https://github.com/haskell/haskell-language-server/issues/1160#issuecomment-756566273