Reputation: 3273
There seems to be a lack of formatting settings for vscode. I want to be able to format html such that my html shows up as:
<div attrib1=value1
attrib2=value2
attrib3=value3>
Content
</div>
This is one functionality that I'd really love to have!
Upvotes: 62
Views: 39385
Reputation: 111
Via VSCode, install Extension: Prettier - Code formatter v9.16.0
Control + Shift + P , to open 'Preferences: Open User Settings (JSON)'
"[html]": {
// "editor.defaultFormatter": "vscode.html-language-features",
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
Then go back to your HTML(.ts) document
Shift + Alt + F, to format document
Upvotes: 0
Reputation: 3114
You should open the settings.json file (shift+cmd+p for mac) and click on Open Preference: Open Settings (JSON)
add the following line at the beginning of the JSON file:
"html.format.wrapAttributes": "force-aligned",
In case formatting still does not work (this is a different issue), search for HTML and add the following lines
"[html]": {
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.formatOnType": true,
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
Close and Open vscode then format by using (option+Shift+F)
Upvotes: 1
Reputation: 51
I know this is late, but I came here searching for an answer too. As @adi518 mentioned, the vscode automatic formatting for this might not be a great idea.
So, to do it where you'd like it, this extension might help: https://marketplace.visualstudio.com/items?itemName=dannyconnell.split-html-attributes
Upvotes: 1
Reputation: 3273
VSCode added a way to do this now.
You can edit your settings.json
(ctrl+shift+p) and then add the following for the desired effect:
"html.format.wrapAttributes": "force-aligned"
--or--
"html.format.wrapAttributes": "force"
force-aligned will also add indents to align it with the attribute on the line where tag was opened.
Visit this link for more details or updates.
Upvotes: 80
Reputation: 61
My extended html was being limited by the "Prettier: Print width" setting, I thought I'd put a random value as 0, but then all the tags start breaking the attributes. So he put 10,000. This solved my problem.
Upvotes: 6
Reputation: 1146
There are differnt "formatter" extensions, but one I found does a decent job of this exact formatting that you are looking for. It's called "vscode-tidyhtml".
https://marketplace.visualstudio.com/items?itemName=anweber.vscode-tidyhtml
It should format HTML so that attributes are on different lines. I am not sure if it works well for other file types.
Upvotes: 3