VS Code - Quickly increment and decrement numeric values with keyboard shortcuts
Tags: vscode, productivity, webdev, css
Published: 2021-10-11 17:41:33

When you are building websites, sometimes you need to experiment with different values to get things *just* right. You are playing goldilocks, trying out bigger and smaller until you find that sweet spot!

In the browser devtools, you can click on a property value, and you can increment and decrement numbers with keyboard shortcuts.

<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l4pkkjrxdxiqvexskqno.gif" alt="firefox devetools chaning values demo" width="408" height="105"/>

For example, in Firefox devtools, you have the following keyboard shortcuts:
- pressing <kbd>↑</kbd>, the up arrow key, will increase the selected value by 1
- pressing the <kbd>↓</kbd>, the down arrow key, will decrease the selected value by 1
- pressing the <kbd>Shift</kbd> and <kbd>↑</kbd> (up arrow) keys together will increase the selected value by 10
- pressing the <kbd>Shift</kbd> and <kbd>↓</kbd>  (down arrow) keys together will decrease the selected value by 10

It would to be nice to have this in VS Code too!

Well, the functionality is there waiting for you! You just need to add keyboard shortcuts to make the commands accessible by the keyboard. [Emmet](https://code.visualstudio.com/docs/editor/emmet) provides the following commands:
1. `Emmet: Increment by 10`
1. `Emmet: Increment by 1`
1. `Emmet: Increment by 0.1`
1. `Emmet: Decrement by 10`
1. `Emmet: Decrement by 1`
1. `Emmet: Decrement by 0.1`

To add a keyboard shortcut, open the Keyboard Shortcuts editor with the command `Preferences: Open Keyboard Shortcuts`. This lists all available commands with and without keybindings. You can change, remove, and reset keybindings. It also has a search box on the top that helps you to finding commands or keybindings. Lets search for the "emmet increment" and set keybindings for the 3 increment commands.

<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zl0i13z1r9drs3byfvjw.png" alt="adding new shortcuts through keyboard settings ui" width="902" height="264"/>

Keep in mind that there may be existing keybindings for the key combination you want to use. VS Code will give you warning if there is existing keybindings.

Usually, you can use the same key combination if you provide a specific `when` clause to uniquely identify when your keybinding applies. Sometimes though, you may have to edit or remove an existing keybinding and take its place. You can see I use `editorTextFocus` in the `when` clause to ensure it only applies to open files that have focus, this was sufficient in my case.

<p>And here it is in action.</p>

<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fq0wxrymi0hzmmvex1is.gif" alt="adding new shortcuts through keyboard settings ui" width="600" height="378" loading="lazy"/>

You can use this in any file where [Emmet](https://code.visualstudio.com/docs/editor/emmet) is available. By default, Emmet is available in: html, haml, pug, slim, jsx, xml, xsl, css, scss, sass, less, stylus, and php files. You can [add Emmet to more files too if you wish](https://code.visualstudio.com/docs/editor/emmet#_emmet-configuration).

If you want to copy-and-paste the same settings that I have. You can open the config file for Keyboard Shortcuts with the command `Preferences: Open Keyboard Shortcuts (JSON)` and paste this snippet at the bottom:

```json
 {
 "key": "ctrl+alt+up",
 "command": "editor.emmet.action.incrementNumberByOne",
 "when": "editorTextFocus"
 },
 {
 "key": "ctrl+alt+down",
 "command": "editor.emmet.action.decrementNumberByOne",
 "when": "editorTextFocus"
 },
 {
 "key": "ctrl+up",
 "command": "editor.emmet.action.incrementNumberByOneTenth",
 "when": "editorTextFocus"
 },
 {
 "key": "ctrl+down",
 "command": "editor.emmet.action.decrementNumberByOneTenth",
 "when": "editorTextFocus"
 },
 {
 "key": "shift+down",
 "command": "editor.emmet.action.decrementNumberByTen",
 "when": "editorTextFocus"
 },
 {
 "key": "shift+up",
 "command": "editor.emmet.action.incrementNumberByTen",
 "when": "editorTextFocus"
 }
```

For more info on setting up keyboard shortcuts, you can read the [Key Bindings for Visual Studio Code doc](https://code.visualstudio.com/docs/getstarted/keybindings).

You will be a tweakmaster in no time. 🔼🔽🦸