DEV Community


TIL: Integrate Visual Studio Code with Shell / CLI

jonasbn profile image jonasbn ・2 min read

Up to now I have been using Sublime Text as my preferred editor, before that it was TextMate, before that it was BBEdit and sometimes in between it has been Atom, Komodo, Vim and vi.

I have come really, really excited with Visual Studio Code (code) and most of my programing and text editing is being done using that editor.

Normally I start code from the command line, but today I decided to go all the way a specified
it as the editor to be executed when edits are initiated from other command line tools using the $EDITOR or $VISUAL variable.

export EDITOR="code --wait --new-window"

This mean that for example can edit, complex command line constructs in code using the CTRL-x,
CTRL-e combination.

code has marvellous Git integration, but if you like me sometime work on the command line instead of the editor with your version control tasks, setting the $GIT_EDITOR environment variable can be quite useful.

This might not be necessary, if you have set $EDITOR or $VISUAL as described above (see also: the Git man page), but if you have special command line setting and would like to differenciate, this could be an option and therefor worth a mention.

export GIT_EDITOR="code --wait --new-window"

And now I can edit commit messages and command lines using code and all the other CLI relying on the $EDITOR integration.


Hand-picked from my TIL collection.

Discussion (7)

Editor guide
tux0r profile image

It might be handy to make a difference between $EDITOR and $VISUAL as they have different purposes (which are often ignored - but still there): $EDITOR is for when you can't have a $VISUAL (and even less so, a GUI one).

jonasbn profile image
jonasbn Author

I made a little experiment this morning, exchanging $EDITOR for $VISUAL and it works as expected.

I guess the recommendation should be to use $VISUAL for you GUI enabled editor and then define $EDITOR point to a non-gui like vi, nano, vim or similar for hosts where you access via ssh.

Which makes your shell configuration portable, which holds a lot of benefits.

So I ended up with the following:

VISUAL='code --wait --new-window'


Thanks for the pointer. I do however wonder where this is documented, would love to know a know authoritative resource. I will update my TIL accordingly.

tux0r profile image
tux0r • Edited

Parts of the definition come from POSIX. Even in 2018 when most operating systems skip large parts of POSIX, it could be useful to stick to its recommendations.

Glad to help.

Thread Thread
jonasbn profile image
jonasbn Author

I find your recommendation much more correct, the more I think about it - thanks again.

My .bash_profile has followed me for many years, glad to learn that I can still improve it.

chenge profile image

On mac, start code in bash.

ln -s /Applications/Visual\ Studio\ codeapp
open codeapp

jonasbn profile image
jonasbn Author

You can also use the official approach, described here:

As always, and luckily, there is more than one way to do it :-)

chenge profile image

Cool, more simple. thanks. :)