I love tools. I like spamming git commands in my terminal, and basking in the color formatting I worked so hard for. I like digging through Chrome Dev Tools to find the font that is actually being rendered on a web site. I especially like using Sublime as a dedicated editor for these blogs!

I wonder, though, what would happen if I did my terminal work, git management and debugging all in VS Code.

After giving this a shot, I realized it’s quite possible. I’ve never leaned on VS Code’s Git tooling, and I’ve certainly never considered debugging an app running in Chrome in VS Code. Now I’m gonna do all three of those things in VS Code. I mean, what else is there?

This means I’m going to be using 2 of the 5 main sidebar tabs I’ve never touched before. The source control manager and the debugger. Four of those icons have a cmd+shift+letter keyboard shortcut to open them. The Source Control Manager has a keyboard shortcut of ctrl+shift+g, however. ctrl != cmd. Weird.

Dropping this in keybindings.json makes things nice and uniform

{ "key": "cmd+shift+g", "command": "workbench.view.scm" }

But it does override a shortcut (that I’d never used before. )

Hiccup #2: Any Git work beyond committing isn’t going to happen in VS Code. I need to cherry-pick from one branch to another. Let’s see how easy it is in the integrated terminal.

That was easy! I miss my giant terminal with multiple tabs and windows, though… It is nice to have everything unified on one screen without constant cmd + tab hopping. I’ll stick with this for awhile.

Feature request: Pressing a keyboard shortcut to open one of the 5 main tabs when that tab is active should hide the sidebar.

The Terminal

I think I can use the smaller terminal as effectively, but not if I keep having to click over to it. Luckily, I found this article. Seems actions exist to add keybindings.

With these new keybindings, I can create, kill and cycle through terminals.

  {
    "key": "ctrl+alt+\\",
    "command": "workbench.action.terminal.toggleTerminal",
  }, 
  {
    "key": "ctrl+alt+cmd+\\",
    "command": "workbench.action.terminal.new",
  }, 
  {
    "key": "ctrl+alt+cmd+backspace",
    "command": "workbench.action.terminal.kill",
  }, app
  {
    "key": "ctrl+alt+[",
    "command": "workbench.action.terminal.focusPrevious",
  },

  {
    "key": "ctrl+alt+]",
    "command": "workbench.action.terminal.focusNext",
  }, 

A few days in

The biggest change to my flow is that I’m using the integrated terminal, and I’m surprised at how much I like it. I don’t think I appreciated the context switching involved with cmd + tabbing to another application to run terminal commands.

I’m also running the app through the debugger. I’m not leaning on the debugger as much as I think I could. It’s still easier to just look at the browser instead of setting breakpoints. Piping the browser’s stdout to the debug console does save time though, since there’s one less application to switch to.

Oh! Perhaps the biggest win is using the touch bar to control the debugger. It’s the first time I’ve really felt like the touch bar is a plus.