One of the features I’m most fond of in Visual Studio Code is the Format Document feature that is built into Visual Studio Code.
Side Note: If you’re writing PowerShell scripts or modules then you should be using Visual Studio Code. You should only be using PowerShell ISE if you don’t have the ability to install Visual Studio Code.
The Format Document feature can be used in many different document types in Visual Studio Code to correct the layout based on your user settings or the workspace settings for the project you’re working on.
This enables me to configure Visual Studio Code to auto format PowerShell code the way I like it for my own projects, but still adhere to the code formatting standards of any other projects I work on without having to remember what they are for each. This saves so much time and hassle.
Tip: If you’re contributing code to an Open Source project, the project maintainers may have included a .vscode\settings.json in the project folder. This may contain workspace specific formatting settings that you should apply before submitting code back to the project.
But even if you’ve don’t define and code formatting settings Visual Studio Code will still do a great job of formatting your PowerShell code. Having nicely formatted code really is not a requirement to being awesome at writing PowerShell, but it does make it easier for not so awesome PowerShell people to read, understand and potentially maintain your work.
Formatting a PowerShell Script
Here are the simple instructions for auto formatting a document in Visual Studio Code:
- Download and install Visual Studio Code.
- Once Visual Studio Code is installed, add the PowerShell extension:
- In Visual Studio Code, open the folder of the project containing the file you want to format or open an individual PowerShell file (PS1, PSD1, PSM1).
Note: Workspace formatting settings are only used if you’ve opened the folder rather than an individual file.
- Press SHIFT+ALT+F (or press F1 and type Format and select Format Document).
- The code is now all well formatted, so save the document.
It really is as easy as that.
To make it easier for reviewers and other programmers to read PowerShell code it is recommended that lines of PowerShell code don’t exceed 100 characters. If you run past this limit you should usually split the line using a backtick (`). I also find that this limit prompts me to rethink my code logic if the line gets too long. Besides, no one wants to have to scroll several pages horizontally to be able to read your whole line of code.
However, one of the most common issues I run into when reviewing (or writing my own) PowerShell DSC resources is going over the 100 character limit. For your own projects you’re most welcome to use any styles that you want (although I’d still recommend this one for the reasons above). However, if you’re going to commit this code to the PowerShell DSC community resources you’ll need to ensure your code meets this requirement, otherwise reviewers will likely ask you change it.
But there is an easy way to help identify this problem if you’re using Visual Studio Code or PowerShell ISE Steroids: Setup a vertical guide/ruler at 100 characters.
A nice easy to see vertical ruler/guide tells us when our lines get too long… oh dear this line is too long.
To Set up a Vertical Ruler in Visual Studio Code
- Select User Settings (you can use Workspace Settings if you want) from Preferences in the File menu:
- Your user settings.json file will load on the right, with the Default Settings on the left:
- Add the following line to your settings.json file in between the braces:
- Save the file and restart Visual Studio Code.
To Set up a Vertical Ruler in ISE Steroids
- Select Show Secondary Toolbar from the View menu.
- Click the Vertical Guides button and select Global Guide…
- Enter 100 in the input box and press enter.
The vertical guide is added – better fix that long line!
That is all there is to using vertical guides. Having them setup if you’re planning on committing code to a community project might save you some extra commits and help the community reviewers merge your code faster.
I used to keep around a copy of Markdown Pad to enable me to preview any markdown files I created. However, after an update to a Awesomium SDK Markdown Pad stopped working. I reported the issue but it hasn’t been resolved yet.
But after Irwin Strachan mentioned using Visual Studio Code as a Markdown editor, I wondered if there was an extension that allowed it to Preview the Markdown as well – because that was really all that was missing for me to do away with Markdown Pad. So I went and did a search for Markdown extensions in VS Code:
Want to install extensions in VS Code? Press F1 and type ‘ext install’.
I found a few, but after playing around with them a bit I noticed a small button in the latest version of Visual Studio Code at the top right corner when a markdown file is open:
The Preview button!
I wonder what that might do?
That is a great looking markdown preview.
Oh, now look at that! Just what I needed. I don’t know which version of Visual Studio Code this was added in, but it is fantastic!
You can also use the Visual Studio Code split window function to edit and Preview at the same time:
Changing the markdown automatically updates the preview – nice!
While we’re on the topic of markdown, Irwin also pointed me at this awesome markdown tutorial – it makes learning markdown fun!
Now, Visual Studio Code is not on par with ISE Steroids when it comes to editing PowerShell files, but when you’re dealing with lots of different types of files (including PS files) it can be a real time saver. I highly recommend downloading a copy of Visual Studio Code, installing the PowerShell Extension and giving it a try.
I feel like my birthday has come early: Microsoft has added PowerShell language support in Visual Studio Code:
I mainly use PowerShell ISE with ISE Steroids for most of my coding, but I find when I’m needing to switch between working on multiple files of different types Visual Studio Code is so much faster and slicker. Visual Studio 2015 with PoSH tools would be the ideal way to go, but the PoSH extension is quite slow with any files larger than 20KB. So I’m really excited with what this can do.