# How do I set the external editor for PostgreSQL's psql client?

What do I put in ~/.psqlrc file to set the default editor?

The editor I want to use (Textmate) is at /Users/username/bin/mate.

I found the place in the docs where they talk about it, and tried several syntax variations, but can't seem to get it to work.

For example, this didn't work...

\set PSQL_EDITOR "/Users/username/bin/mate"


In psql when I enter \e I get...

sh: /usr/local/bin/mate: No such file or directory
sh: line 0: exec: /usr/local/bin/mate: cannot execute: No such file or directory

-
For me \set PSQL_EDITOR /usr/bin/vim works. Are you sure that the binary is called mate? –  dezso Jun 29 '12 at 6:56
I suspect /Users/username/bin/mate is a symbolic link to /usr/local/bin/mate, which doesn't exist. –  Phil Jun 29 '12 at 7:18
Yes, it's a symlink. I tried setting it to the direct path to the executable. Same result. –  Ethan Jun 29 '12 at 17:20
Are you unable to change the default editor at all or is it just Textmate you can't change it to? –  Jack Douglas Jul 1 '12 at 18:01

Try setting it to whatever you type to run the application from the shell. If that doesn't work, try running the editor from the shell to troubleshoot.

-

Contrary to my comment above (which was the result of insufficient testing), you should put a line into .bashrc (or any similar place):

export PSQL_EDITOR "/Users/username/bin/mate"


In psql coming with PostgreSQL 9.2, there is a \setenv command, it is supposed to work from .psqlrc as well.

(Credits to Pedro Romano.)

-