til

Today I Learned: collection of notes, tips and tricks and stuff I learn from day to day working with computers and technology as a developer

View project on GitHub

Integrate Visual Studio Code with Shell / CLI

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 $VISUAL environment variable.

Before we move on please follow the official guide to install the Visual Studio Code CLI tool.

export VISUAL="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 marvelous 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 is however not necessary, if you have set $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 $VISUAL definition.

Do note that $VISUAL is for GUI-capable environments, whereas you can define the $EDITOR environment variable for no-GUI pointing to another shell. The separation of the two makes your Shell configuration portable, so what works for you locally, can be copied to the hosts you access via ssh and things will work here as well.

VISUAL='code --wait --new-window'
EDITOR='/usr/bin/vi'

export VISUAL EDITOR

References