loading...

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.

References

Hand-picked from my TIL collection.

Posted on by:

jonasbn profile

jonasbn

@jonasbn

Computer programmer, runner, LEGO builder, powernapper, yakshaver and father of 2 boys all squeezed in the few hours available.

Discussion

markdown guide
 

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).

 

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'
EDITOR='/usr/bin/vi'

export VISUAL EDITOR

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.

 

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.

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.

 

On mac, start code in bash.


ln -s /Applications/Visual\ Studio\ Code.app/ codeapp
open codeapp

 

You can also use the official approach, described here: code.visualstudio.com/docs/setup/mac.

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

 

Cool, more simple. thanks. :)