Visual Studio Code indentation for Python
Question:
How do I enable indentation in Visual Studio Code?
I’m trying to learn Python (new to programming) and need auto-indentation. It worked with the first version I tried, but it doesn’t indent after a colon (:
) any more. How can I configure it to automatically indent?
Answers:
You can install the Visual Studio Code Python extension which will provide intellisense, auto-completion, code formatting, and debugging.
Here is more information on the Python extension, here.
As said there is the Python extension which now do it out of the box, but still don’t do a great job, and an example is when you copy and past a whole block into a function or so. It just indents the first line, and that’s not a good behavior. Here are two good helpful solutions:
- indent a whole block manually: select the whole block, and then click Tab. If you want to indent backward, you do it with Shift+Tab. That’s it, and I think that can be useful in several places.
- Python auto indent extension (https://marketplace.visualstudio.com/items?itemName=hyesun.py-paste-indent). It solves the problem when pasting. Just see how it works in the link. Now about setting it up: You need to set just one keybinding for the command “pyPasteIndent.pasteAndIndent” provided by the extension. Once done, you will have your own shortcut to paste and indent automatically (I have set it to Alt + P)
Here is how:
– Ctrl+SHIFT+P to open the command palette, then write “key”*, choose *“open keyboard shortcut”, and then the keybinding page open, which it’s the nice interface for the **keybindings.json. You can open keybindings.json the same way and by choosing “open keyboard shortcut file” (in place of just “open keyboard shortcut”). Give it a look if never have. But here I will go with the nice interface. Know also that you can open that going menu File → Preference → Keyboard Shortcut.
In the keybinding window, in the search bar, paste pyPasteIndent.pasteAndIndent, and then click the + button to add the shortcut and create the keybinding.
The image below shows well how it’s done:
I faced similar issues while editing. Select the lines of code you wish to intend and press Ctrl + ] in Windows or CMD+] on Mac.
You can change the indent size in settings. Search for tab size in settings. I use two, by the way.
I faced similar issues switching from PyCharm. The Python Indent extension, which is available in the Visual Studio Code marketplace, works perfectly fine for me.
Simple solution!
Click the tab size (may show “Spaces: 4”) in the bottom right corner and choose Convert Indentation to Tabs or Convert Indentation to Spaces as per your requirement.
I installed this extension: Python Indent. It works very well.
For me, "Convert Indentation to Tabs" has worked.
To do that:
- Go to "Command Palette" Ctrl+Shift+P (View>Command Palette)
- Type in & select "Convert Indentation to Tabs" and press Enter
These three setting from vs code website helped me fix the indentation issue.
"python.formatting.autopep8Args": ["--max-line-length", "120", "--experimental"],
"python.formatting.yapfArgs": ["--style", "{based_on_style: chromium, indent_width: 2}"],
"python.formatting.blackArgs": ["--line-length", "100"]
And select one of them as the formatter using:
"python.formatting.provider": "yapf",
How do I enable indentation in Visual Studio Code?
I’m trying to learn Python (new to programming) and need auto-indentation. It worked with the first version I tried, but it doesn’t indent after a colon (:
) any more. How can I configure it to automatically indent?
You can install the Visual Studio Code Python extension which will provide intellisense, auto-completion, code formatting, and debugging.
Here is more information on the Python extension, here.
As said there is the Python extension which now do it out of the box, but still don’t do a great job, and an example is when you copy and past a whole block into a function or so. It just indents the first line, and that’s not a good behavior. Here are two good helpful solutions:
- indent a whole block manually: select the whole block, and then click Tab. If you want to indent backward, you do it with Shift+Tab. That’s it, and I think that can be useful in several places.
- Python auto indent extension (https://marketplace.visualstudio.com/items?itemName=hyesun.py-paste-indent). It solves the problem when pasting. Just see how it works in the link. Now about setting it up: You need to set just one keybinding for the command “pyPasteIndent.pasteAndIndent” provided by the extension. Once done, you will have your own shortcut to paste and indent automatically (I have set it to Alt + P)
Here is how:
– Ctrl+SHIFT+P to open the command palette, then write “key”*, choose *“open keyboard shortcut”, and then the keybinding page open, which it’s the nice interface for the **keybindings.json. You can open keybindings.json the same way and by choosing “open keyboard shortcut file” (in place of just “open keyboard shortcut”). Give it a look if never have. But here I will go with the nice interface. Know also that you can open that going menu File → Preference → Keyboard Shortcut.
In the keybinding window, in the search bar, paste pyPasteIndent.pasteAndIndent, and then click the + button to add the shortcut and create the keybinding.
The image below shows well how it’s done:
I faced similar issues while editing. Select the lines of code you wish to intend and press Ctrl + ] in Windows or CMD+] on Mac.
You can change the indent size in settings. Search for tab size in settings. I use two, by the way.
I faced similar issues switching from PyCharm. The Python Indent extension, which is available in the Visual Studio Code marketplace, works perfectly fine for me.
Simple solution!
Click the tab size (may show “Spaces: 4”) in the bottom right corner and choose Convert Indentation to Tabs or Convert Indentation to Spaces as per your requirement.
I installed this extension: Python Indent. It works very well.
For me, "Convert Indentation to Tabs" has worked.
To do that:
- Go to "Command Palette" Ctrl+Shift+P (View>Command Palette)
- Type in & select "Convert Indentation to Tabs" and press Enter
These three setting from vs code website helped me fix the indentation issue.
"python.formatting.autopep8Args": ["--max-line-length", "120", "--experimental"],
"python.formatting.yapfArgs": ["--style", "{based_on_style: chromium, indent_width: 2}"],
"python.formatting.blackArgs": ["--line-length", "100"]
And select one of them as the formatter using:
"python.formatting.provider": "yapf",