How do I find and set my $EDITOR environment variable?

When I am using ipython or ipython3, I can use the %edit command to open up an editor to write my python scripts in. My problem is that the default editor is vim and I really do not get how to use that editor. What I would like to do is to change the editor to either nano or gedit. I think to stay with the terminal I would prefer to change it to the nano editor.

When I type in the 'edit?' command into the ipython terminal it says :

%edit runs IPython's editor hook. The default version of this hook is set to call the editor specified by your $EDITOR environment variable. If this isn't found, it will default to vi under Linux/Unix and to notepad under Windows. See the end of this docstring for how to change the editor hook.

Then when I see the end of that docstring I see this:

Changing the default editor hook:

If you wish to write your own editor hook, you can put it in a configuration file which you load at startup time. The default hook is defined in the IPython.core.hooks module, and you can use that as a starting example for further modifications. That file also has general instructions on how to set a new hook for use once you've defined it.

Sorry to be such a newbie, but I get lost here. I am not sure how to get to the IPython.core.hooks module, or just simply set an environment variable $EDITOR to nano.

Any suggestions?


Solution 1:

You can set the $EDITOR variable with this command:

export EDITOR="/usr/bin/nano"

This will define the variable EDITOR for the current session and pass it into the environment of all its child processes. To set it permanently you must define it in one of the system configuration files. The highest level at which you can do this is to set it in /etc/environment. This defines it globally:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
EDITOR="/usr/bin/nano"

Check that variable is defined:

$ echo $EDITOR
/usr/bin/nano

Editor's note: it's often preferable to put environment variables in your own ~/.profile, which is a lot easier to fix if something goes wrong.

Solution 2:

Add line

export EDITOR=nano

to your ~/.profile and ~/.bashrcas in following picture. Do not put quotes around nano

enter image description here

and then run

source ~/.profile 
source ~/.bashrc

at the prompt after modifying .profile and .bashrcfor the modification to take effect.

enter image description here

Now the %edit in ipython will open nano.

~/.bashrc will be called for interactive + non-loginshell

whereas ~/.profile will be called for interactive + login shell

In your case it is enough to just add it in ~/.bashrc instead of ~/.profile.